打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
指定使用静态库

1、在Linux下,动态库和静态库同事存在时,gcc/g++的链接程序,默认链接的动态库。

                 可以使用下面的方法,给连接器传递参数,看是否链接动态库还是静态库。

          

                -WI,-Bstatic             -llibname                                   //指定让gcc/g++链接静态库

使用:

                gcc/g++   test.c -o test      -WI,-Bstatic     -llibname

         

              -WI,-Bdynamic       -llibname                                    //指定让gcc/g++链接动态库

使用:

               gcc/g++   test.c -o test    -WI,-Bdynamic        -llibname

 

               如果要完全静态加在,使用-static参数,即将所有的库以静态的方式链入可执行程序,这样生成的可执行程序,不再依赖任何库,同事出现的问题是,这样编译出来的程序非常大,占用空间。

 

         

 

2、Linux下动态库为什么会出现编译OK,运行时找不到的情况。

                  原因是:

                          linux下链接器默认是不记录库的搜索路径的,只记录名字,所以才会有编译时OK,但运行时,找不到的情况。

                解决方法:

                         想在程序中记录路径,可以使用-WI,-rlibpath指定动态库的搜索路径。

                         使用方法。

                          gcc/g++    test.c   -o test   -WI,rlibpath   -llibname

 

3、关于Linux下库的更多问题,可以参看:

                自己的博客:   http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/

               http://xiaobin.net/200911/analytics-on-unix-static-and-dynamic-library/ 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux中编译静态库(.a)和动态库(.so)的基本方法_only you
Linux下静态链接库和动态链接库的使用
静态库&动态库
Linux静态链接(库)、动态链接(库)、可执行文件加载相关问题(创建、选项、环境变量等)
linux下.a/.so/.la目标库区别
库文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服