代码之家  ›  专栏  ›  技术社区  ›  jdizzle

为什么-export动态标志不适用于存档?

  •  2
  • jdizzle  · 技术社区  · 14 年前

    如果我用-export动态标志编译和链接一个可执行文件,它不适用于存储在链接的存档文件中的符号。该标志仅用于为链接的对象(不在存档中)导出符号。有人能解释为什么会这样吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   jdizzle    14 年前

    问题似乎是.o文件内部的.a文件只有在可执行文件需要时才被链接(显然它被称为“死剥离”)。在我的例子中,只有使用dl命令显式打开的共享库才需要这些符号。我可以链接--whole archive选项(至少在GNU上),这将强制链接归档中的所有对象。

        2
  •  0
  •   bmargulies    14 年前

    因为档案馆不进口或出口任何东西。

    “.a”文件只是“.o”文件的概要。在将导入和导出链接到可执行文件或共享库之前,没有导入和导出的概念。“ar”档案中没有数据结构来存储这样的东西。