【发布时间】:2009-11-19 12:43:03
【问题描述】:
假设我有一个静态库 libx.a。如何让这个库中的一些符号(不是全部)始终出现在我与我的库链接的任何二进制文件中?原因是我需要这些符号通过 dlopen+dlsym 可用。我知道 --whole-archive 链接器开关,但它强制库存档中的所有目标文件链接到生成的二进制文件中,这不是我想要的......
到目前为止的观察(CentOS 5.4,32 位)(upd:这一段是错误的;我无法重现这种行为)
ld main.o libx.a
会愉快地去除所有未引用的符号,而
ld main.o -L. -lx
将链接整个库。我想这取决于使用的 binutils 版本,但是,较新的链接器将能够从静态库中挑选单个对象。
另一个问题是如何在Windows下达到同样的效果?
提前致谢。任何提示将不胜感激。
【问题讨论】: