1

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

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

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

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

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

你有什么主意吗 ?

4

1 回答 1

0

想法:

  • 在链接您想要的库之前使用 --whole-library 标志,然后在列出其他库之前添加 -no-whole-library 以便只有您需要完全链接的库是并尝试使用添加 --export-dynamic 标志支持它的链接器。
  • 然后挖掘 nm/objdump/exportmap 路http://accu.org/index.php/journals/1372以导出/构建链接信息并使用链接信息http://runtimecompiledcplusplus.blogspot.fr/使用导出的地图和代码,以便您可以在代码中模仿 -Wl。
于 2013-11-23T12:41:58.740 回答