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