在最近的项目中使用了gcc的编译命令,有些命令的用法也不太熟,做个总结。
1 | 举个例子 |
-I(大写i)
- 用来指定头文件目录
- /usr/include目录一般不用指定,gcc知道去哪里找,但是如果头文件不在/usr/include,我们就要用 -I 来指定了,比如头文件在/myinclude,那需要加上 -l /myinclude
- 不然会报xxxx.h:No such file or directory错误
- 如果头文件就在当前目录,则可以使用 -I. 来指定
-l(小写l)
- 用来指定程序要链接的库
- 紧接着就是库名(中间没有空格),如果库名是m,则库文件名为libm.so,那么直接使用-lm
- mac中的第三方库名是用dylib来结尾的
-L
- 放在/lib /usr/lib /usr/local/lib 直接使用-l参数就能链接
- 如果没有放在上述三个目录里,直接用 -l 链接会报错 ld: cannot find -lxxxx
- 意思就是程序在那3个目录里找不到libxxx.so
- -L跟着库文件所在的目录名
- 比如libtest.so放在/aaa/bbb目录下,则 -L/aaa/bbb -ltest
参考链接