gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:57:06 25 4
gpt4 key购买 nike

在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 .我究竟做错了什么?

最佳答案

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

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

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

关于gcc - 如何在gcc中将静态库链接到动态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com