整个库不可用时的解决方法

Workaround for when -whole-library is not available

本文关键字:解决 方法      更新时间:2023-10-16

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

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

我想用之类的东西来计算一个文件

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

但它不适用于成员函数,这些函数不能强制转换为int(也可以是私有的)。

你知道吗?

想法:

  • 在链接所需的库之前使用--wholelibrary标志在添加之后-在列出其他库之前没有整个库,因此要完全链接,您需要尝试使用支持它的链接器添加-导出动态标志
  • 然后挖掘nm/obdump/exportmap道路http://accu.org/index.php/journals/1372导出/构建链接信息和使用链接信息http://runtimecompiledcplusplus.blogspot.fr/用于使用导出的映射和代码,以便您可以在代码中模拟-Wl