转:关于GCC中同时使用动态和静态库链接的操作参数和解释
来源:互联网 发布:网络平台怎么开拓市场 编辑:程序博客网 时间:2024/05/12 02:40
来自:http://blog.sina.com.cn/s/blog_4cb133e5010009zx.html
在我们开发的一个系统中,由于动态链接其中的一个动态库时,编译时没有问题,而运行时不能进行,如果将该库静态连接时,运行却没有问题。具体什么原因,一直没有搞清楚,权且当作暂时的解决办法。
Note - if the linker is being invoked indirectly, via a compiler driver (eg gcc
) then all the linker command line options should be prefixed by -Wl,
(or whatever is appropriate for the particular compiler driver) like this:
gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
This is important, because otherwise the compiler driver program may silently drop the linker options, resulting in a bad link.
实际上主要针对隐式应用LINKER的参数,用“-Wl,”来标识,,“--startgroup foo.o bar.o -Wl,--endgroup”表示一组,,-Bstatic -Bdynamic 作为关键字与-WL,不可分,在GCC连接库时,默认链接是动态链接,现在用上面的指令限制在链接sqlite库时采用静态链接。
-Bstatic 还有三个写法: -dn和
-non_shared 和
-static
-Bdynamic 还有两个写法:-dy
和-call_shared
上面参数“-L/usr/local/sqlite-arm-linux/.libs ”放不放在-Wl,...之间无所谓,因为它只是提供了sqlite动静态库的位置。可以改成下面的参数形式,更直观。
-L/usr/local/sqlite-arm-linux/.libs -L/usr/local/arm/3.3.2/lib -Wl,-dn -lsqlite -Wl,-dy
-Wl,-dn 和 -Wl,-dy成对出现才能起到标题所说的作用。
关于-Wl,后面的参数还有很多,全部明白我也不能。
还有一个问题值得注意,在-Wl,后面不能有空格,否则会出错!
关于-Wl,option 说明还有一段说明
GCC命令参数的英文原文
-Wl,option
Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.
传递参数option作为linker的一个参数,如果option包含逗号,将在逗号处分割成几个参数。
例如:
-Wl,-dn –lsqlite
-dn 开始静态链接
-lsqlite 静态链接sqlite库
静态链接完后,然后需要动态链接
-Wl,-dy
重新开始动态链接。
- 转:关于GCC中同时使用动态和静态库链接的操作参数和解释
- 转:关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- [转]GCC中同时使用动态和静态库链接的参数解释
- GCC中同时使用动态和静态库链接的操作参数
- gcc同时使用动态和静态链接
- gcc同时使用动态和静态链接
- GCC中同时使用动态和静态库链接的编译
- GCC同时使用静态库和动态库链接
- GCC同时使用静态库和动态库链接
- gcc同时使用动态和静态链接(2)
- gcc中动态库和静态库的链接顺序
- gcc中动态库和静态库的链接顺序
- gcc中动态库和静态库的链接顺序
- gcc中关于静态库和动态库使用
- gcc中关于静态库和动态库使用
- CSS设置中文字体大全
- 安装emacs 23.2的错误:configure: error: a system implementation of alloca is required
- IBM信息管理领域的10大趋势
- SQL Server Query Execution Plan Analysis
- 安装了QTTabBar_1.2.1.1_glb
- 转:关于GCC中同时使用动态和静态库链接的操作参数和解释
- Winzip压缩命令
- 在Linux中Oracle安装成功后,首次启动使用时,会出现的一些问题总结和解决办法
- VC之GDI(转)
- 详解VLAN ACL及配置实例
- 华为e1750 3g上网卡连接被中止(搞定)
- 几行代码解决淘宝面试题之Clojure版
- 如何使用jQuery向asp.net Mvc传递复杂json数据
- 人在喧嚣中变得好孤单