如果我使用-export-dynamic标志编译和链接可执行文件,则它不适用于存储在链接的存档中的符号。仅在导出符号上的标志,用于链接的不在归档中的对象。有人可以解释为什么会这样吗?
答案 0 :(得分:1)
问题似乎是.a文件中的.o文件只有在可执行文件需要时才链接(显然它叫做“死剥”)。在我的例子中,符号仅由使用dl命令显式打开的共享库所需。我可以链接--whole-archive选项(至少在GNU上),这将强制链接归档中的所有对象。
答案 1 :(得分:0)
因为档案不会导入或导出任何内容。
'.a'文件只是'.o'文件的汇编。在将它们链接到可执行文件或共享库之前,没有导入和导出的概念。 'ar'存档中没有数据结构来存储这样的东西。