我试图使用--whole-archive
选项,但它似乎不适用于-Xlinker
。我如何使用 - Xlinker
来添加此选项?如何从静态库中添加特定符号
下面是整个故事: 我写了一个主程序A和几个共享库B1,B2等。主程序将使用dlopen在运行时加载这些共享库。我编译主程序A与主程序(S1,S2 ...等)或共享库(S3,S4 ...等)使用的所有可能的静态库链接。然后我编译没有静态库的共享库。 当调用dlopen时,由于共享库中的未定义符号,程序失败。这个符号确实存在于静态库S3中,但我在主程序的符号表中找不到它。
因此,我在编译主程序时添加--whole-archive选项,但该符号仍然不存在于最终的二进制文件中。如何将这个符号添加到主程序中,而不是直接在主程序中使用。
假设你使用的是GNU binutils,''-whole-archive'与'-Xlinker'完美兼容。你可能想澄清一下你的问题:你使用的是什么命令行,是什么让你相信' - 整个档案文件'不起作用,等等。 –
谢谢我已经使整个故事更加清晰 – Shawn