gcc工具小结
2018-01-08 10:21
246 查看
关于-l和-Wall选项的解析:
-Wall 打开gcc的所有警告
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。
好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)
放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc
-ltest
尤其是优选项的设置:设置不当会造成程序出错。
-Wall 打开gcc的所有警告
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。
好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)
放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc
-ltest
尤其是优选项的设置:设置不当会造成程序出错。
相关文章推荐
- gcc工具小结
- mips-linux-gcc交叉编译工具链搭建小结
- mips-linux-gcc交叉编译工具链搭建小结【转】
- [Android] 修图工具Draw9patch使用小结(附ubuntu快捷截图方法)
- 嵌入式Linux开发工具之gcc编译器
- 各种开发工具技巧小结
- Linux下gcc编译控制动态库导出函数小结 .
- C++语言机制之多态性 与 代码重用机制的一种工具之模板 小结 .
- Linux下gcc工具
- java keytool证书工具使用小结
- Linux开发工具之gcc编译器
- java keytool证书工具使用小结
- arm-gcc-linux工具编译工具链的制作
- 知识点小结——版本调试——内存分析工具——设备调试流程——打包ipa文件——单例模式
- 编译工具链(GCC)建立
- linux下文件比较工具diff|cmp使用小结
- 漏扫工具小结
- linux 下的sar工具命令小结
- yii工具篇(composer,yii)学习小结
- linux 下的sar工具命令小结