gcc 编译参数

-I : 包含头文件路径(绝对路径、相对路径都可以)
-O :优化选项,1-3
-L : 包含的库路径
-l :指定库名(如libxxx.so或libxxx/a,-lxxx)
-o : 指定目标文件
-c :编译成.o文件
-g : 用于gdb调试,不加此选项不能gdb调试
-Wall : 显示更多的警告
-D :指定宏编译
-lstdc++ : 编译C++代码

编译参数 用途
-I 指定头文件路径(绝对路径、相对路径都可以)
-O 优化选项,1-3,越高优化越多
-L 指定库路径
-l 指定库名(如libxxx.so或libxxx/a,-lxxx)
-o 指定目标文件
-c 编译成二进制文件(.o文件)
-g 用于gdb调试,不加此选项不能gdb调试
-Wall 显示更多的警告(这不是一个单词,它实际是-W,选项是all)
-D 编译时指定宏,等同于C语言中 #define MACRO(#define MACRO (100)
-E 输出到标准输出(宏替换、头文件展开)
-S 编译成汇编
-lstdc++ 编译C++代码

指定运行时库

Linux环境下程序运行涉及到动态库时,程序运行时候会出现找不到xxx库的提示,一般来说有两种解决方法:

  • 在环境变量LD_LIBRARY_PATH中指定搜索库的路径
  • 将链接库的目录添加到/etc/ld.so.conf文件中中,然后使用ldconfig进行更新,进行动态链接库的运行时动态绑定

最近,发现可以在编译程序时指定运行时库的路径的方法,编译参数为-Wl,-rpath=libpath,如

gcc -o foo foo.c -L./lib -lmylib -Wl,-rpath=./lib

参考文献

  1. gcc 运行指定动态库的三种方法
  2. linking with -Wl,-rpath and $(prefix)
posted @ 2022-05-06 14:21  时间的风景  阅读(393)  评论(0)    收藏  举报