【发布时间】:2011-11-17 09:54:29
【问题描述】:
我正在尝试使用--whole-archive 选项,但它似乎不适用于-Xlinker。如何使用 -Xlinker 添加此选项?
这是整个故事: 我编写了一个主程序 A,以及几个共享库 B1、B2 等。主程序将使用 dlopen 在运行时加载这些共享库。我编译主程序 A 与主程序(S1、S2...等)或共享库(S3、S4...等)使用的所有可能的静态库链接。然后我编译没有静态库的共享库。 调用 dlopen 时,由于共享库中未定义符号,程序失败。这个符号确实存在于静态库 S3 中,但我在主程序的符号表中找不到它。
所以我在编译主程序时添加了 --whole-archive 选项,但最终二进制文件中仍然不存在该符号。如何在主程序中不直接使用此符号时将其添加到主程序中。
【问题讨论】:
-
假设您使用的是 GNU binutils,
--whole-archive与-Xlinker完美配合。您可能想澄清您的问题:您使用了什么命令行,是什么让您相信--whole-archive不起作用,等等。 -
谢谢我把整个故事讲得更清楚了
标签: build compilation linker