首页 > 其他 > 详细

解决静态库之间相互依赖的问题(对‘*‘未定义的引用)

时间:2020-10-13 14:55:37      阅读:111      评论:0      收藏:0      [点我收藏+]

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

两个静态库之间相互依赖:在静态库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

完美解决。

解决静态库之间相互依赖的问题(对‘*‘未定义的引用)

原文:https://www.cnblogs.com/lidabo/p/13808396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!