当-whole-library不可用时的解决方法

时间:2013-11-23 12:08:04

标签: c++ linker emscripten

我正在尝试在不支持-Wl,-whole-library标志的环境(emscripten)上进行编译。如何强制编译器包含导出的符号?解决方案应该尽可能多地满足这些属性:

  • 可以应用于单个库(我不想包含其他库中未使用的符号)
  • 是否可以自动生成(例如,通过使用nm获取导出的符号表?)
  • 可以使用功能&成员职能

我考虑用以下内容计算文件:

int x = (int)(&func_a)+(int)(&func_b)+...;

但是它不适用于成员函数,它们不能被转换为int(并且可以是私有的)。

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

思路:

  • 在链接所需的lib之前使用--whole-library标志 在添加-no-whole-library之前列出其他libs之后才这样做 你需要的那个是完全链接的,并尝试使用支持它的链接器添加--export-dynamic标志。
  • 然后挖掘nm / objdump / exportmap road http://accu.org/index.php/journals/1372以导出/构建链接信息,并使用链接信息http://runtimecompiledcplusplus.blogspot.fr/来使用导出的地图和代码,以便您可以在代码中模仿-Wl