linux gcc 把静态链接库.a链接到动态链接库.so里
来源:互联网 发布:w10安装不了软件 编辑:程序博客网 时间:2024/05/16 01:47
Original url:
http://blog.csdn.net/sunnyleevip/article/details/41845445
最近公司的项目中突然出现了这样一个需求,我简化再概括后如下:有两大模块,其中一个模块a最终编译出一个可执行文件exec_a,另一个模块b编译出一个动态链接库lib_b.so被模块a的程序exec_a所链接。现在模块b中分出一个小模块c,需要独立成一个项目,它最终生成一个东西,提供给模块b,最后链接成动态库lib_b.so。因为c将会编译出多个.o目标文件,如果提供这些.o给b去链接是没问题的,但是这样来说很不人性化。把b和c两个库同时提供给a去链接,也能解决,但是偏偏a不希望知道和见到c。
于是,我的做法如下,把c编译出一个静态库lib_c.a,提供lib_c.a给b去链接,所以就有了一个动态链接库链接静态库的问题了。这个平时用得不多,记录一下,在链接动态库b时,链接命令如下(默认大家都懂gcc和Makefile啊):
从上面这句编译命令看来就是多了 和 -Wl 都知道是把参数传递给链接器,而--whole-archive就是可以把在这个参数之后的静态库中的函数和变量输出到动态库中,而--no-whole-archive则是关掉这个功能。
否则如果只是单纯地链接一个.a到.so中的话,这个动态库是不会有任何静态库中的内容的,最后链接到可执行文件时,也会出现找不到静态库中的内容。
还有值得注意的就是,我习惯了每次编译后的release版本都strip一下,如果直接对刚刚编译出来的静态库strip操作的话,这个静态库就啥都没有了,因为它的东西没被任何东西所使用,所以全部被去掉了。之前因为这个问题折腾了半天还以为仍然是没有把这个静态库导到动态库去。
本文到此结束!
阅读全文
0 0
- linux gcc 把静态链接库.a链接到动态链接库.so里
- linux gcc 把静态链接库.a链接到动态链接库.so里
- so-a--linux---静态--动态--链接库
- gcc/g++ 动态 静态 链接库 so
- 编译动态链接库.so和静态链接库.a
- linux下动态链接库.so文件 静态链接库.a文件创建及使用
- 链接linux 动态so库
- 动态库(.so)链接静态库(.a)的情况总结
- 动态库(.so)链接静态库(.a)的情况总结
- 动态库(.so)链接静态库(.a)的情况总结
- 动态库(.so)链接静态库(.a)的总结
- Linux 下使用gcc生成so(动态链接库)文件
- Linux下gcc编译生成动态链接库*.so文件
- gcc之链接 so a 库
- 动态链接库、静态链接库;动态链接、静态链接
- 动态链接,静态链接,动态链接库,静态链接库
- linux静态链接库、动态链接库、动态加载 lib so使用学习
- linux静态链接库、动态链接库、动态加载 lib so使用学习
- 带缓冲的I/O操作和不带缓冲的I/O操作
- template
- Android图片加载利器:Glide用法
- hdu 6181 Two Paths
- input输入框自动填充黄色背景解决方案
- linux gcc 把静态链接库.a链接到动态链接库.so里
- Matlab中操作矩阵常用函数
- Spring3.1.0实现原理分析(二十二).Dao事务分析之事务管理器DataSourceTransactionManager
- 算法运行时间
- 阿里2017年校招编程题目第二题
- JS实现图片的自动切换
- Hibernate框架
- 创建一个临时僵死进程
- oracle随机选择,前十条记录