免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1821 | 回复: 7
打印 上一主题 下一主题

[Linux] linux链接库让人抓狂,求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-30 15:16 |只看该作者 |倒序浏览
一个调用者,要链接1.a,用里边的函数func1,然后func1需要用到另一个库2.a的func2.
然后调用者编译的时候是不是要指定-l,把1.a,2.a都包含进来?
擦,这简直是反人类,调用者凭什么要显式链接1.a用到的所有库,就不能生成1.a的时候把2.a包进1.a?

论坛徽章:
0
2 [报告]
发表于 2014-05-30 16:20 |只看该作者
是不是可以这么理解,静态库根本不能叫可执行的库,只是源文件半成品打包了

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
3 [报告]
发表于 2014-06-02 23:19 |只看该作者
你可以用ar把1.a和2.a打包到一起就没这个问题了。

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
4 [报告]
发表于 2014-06-03 12:01 |只看该作者
分开有分开的好处,合并有合并的好处。记得google内部的编译是直接编译成静态的大binary的可执行文件,不使用动态库依赖。也蛮好的,前提是发布的时候内部网络带宽足够。

论坛徽章:
0
5 [报告]
发表于 2014-06-03 12:11 |只看该作者
静态库都需要这么链接啊!

论坛徽章:
0
6 [报告]
发表于 2014-06-04 14:31 |只看该作者
windoze 发表于 2014-06-02 23:19
你可以用ar把1.a和2.a打包到一起就没这个问题了。


ar也试过,需要把所有.a 解成.o吧,而且不能用*,要是要几十个文件就抓瞎了,而且里边.o有同名的怎么办

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
7 [报告]
发表于 2014-06-04 15:50 |只看该作者
回复 6# ricowarner

ar在创建库的时候,可以有重名的.o文件,如果你嫌麻烦,我刚花了几分钟写了一个垃圾脚本,你可以试试

  1. for f in `ls *.a`
  2. do
  3.         dir=`basename -s .a "$f"`
  4.         mkdir "$dir"
  5.         cd "$dir"
  6.         ar x "../$f"
  7.         cd ..
  8. done
  9. find . -name '*.o' | xargs ar rcs lib_what_you_want.a
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-06-19 22:34 |只看该作者
windoze 发表于 2014-06-04 15:50
回复 6# ricowarner

ar在创建库的时候,可以有重名的.o文件,如果你嫌麻烦,我刚花了几分钟写了一个垃圾 ...


3x,能用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP