在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
添加回答
举报
0/150
提交
取消