DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

解决两个静态库之间相互依赖的问题

两个静态库之间相互依赖:在静态库liba.a中声明了某些函数,但是实现在libb.a中,此时a库依赖于b库;然后在静态库中libb.a中,某些结构体或者变量在liba.a中声明的,此时b库依赖于a库。

然后链接的时候,会出现两个库之间的相互依赖问题。链接涉及到顺序问题,当先链接a库时,会出现函数未定义的情况,先链接b库是,也一样。
在这里插入图片描述

查了一下,可以交叉链接,比如:gcc -la -lb -la,大概是这样,但是经过我尝试任然不行(最后通过gcc -la -lb -la -lb -la解决,这算什么…)。最后查到一个参数-Xlinker,用这个参数可以解决静态库之间相互依赖的问题。相较于前面一种,如果多个静态库出现依赖问题的话,就不用自己去管这个依赖关系是怎么样的了,非常的方便。

main: gsoap/lib/libgsoap.a  onvif/lib/libonvif.a openssl/lib/libssl.a openssl/lib/libcrypto.a cJSON/lib/libcJSON.a 
	$(CC)  -o $@ -Xlinker "-(" $^ -Xlinker "-)" $(LDLAGS)
  • 1
  • 2

用法:

$ gcc -o test -Xlinker "-(" liba.a libb.a -Xlinker "-)"
  • 1

完美解决。

posted on   DoubleLi  阅读(3436)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2017-10-13 QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
2014-10-13 VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
2014-10-13 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
2014-10-13 boost::thread用法
2014-10-13 boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
2013-10-13 格式化固定长度字符串,格式化字符串里显示百分号
点击右上角即可分享
微信分享提示