为了账号安全,请及时绑定邮箱和手机立即绑定

如何在gcc中将静态库链接到动态库

如何在gcc中将静态库链接到动态库

慕勒3428872 2019-11-27 14:40:31
在gcc(g ++)下,我编译了一个静态.a(称为some_static_lib.a)库。我想将此.a文件链接(是正确的短语吗?)到libsomeDyn.so我正在构建的另一个动态库(称为)中。虽然可以.so编译,但我看.a不到.so使用nm命令的内容:/ usr / bin / g ++ -fPIC -g -O2 -Wall -Werror -pipe -march = pentium3 -mtune = prescott -MD -D_FILE_OFFSET_BITS = 64 -DLINUX -D_GNU_SOURCE -D_THREAD_SAFE -I ../..../。 ./../../../../ -I ../../../../../../../..// libraries -Wl,-rpath,/ usr / lib -o libsomeDyn.so some.o another.o some_static_lib.a -shared -Wl -x -Wl,-soname,libsomeDyn.so我看不出在功能some_static_lib.a下libsomeDyn.so。我究竟做错了什么?
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

静态库在链接时有特殊的规则。如果静态库中的对象提供了未解析的符号,则该对象只会添加到二进制文件中。


在Linux上,您可以使用--whole-archive链接器选项更改该行为:


g++ -Wl,--whole-archive some_static_lib.a -Wl,--no-whole-archive


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 1199 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信