编译 C/C++ 程序时,有没有一种方法可以链接到 Linux 中的库导出,而无需 ld 嵌入版本信息?
我正在构建一个链接到 Firefox 中的 libxul.so 的共享对象(它是 Firefox 二进制扩展)。我想构建我的共享对象并链接到 libxul.so,以便在运行时加载程序不关心 libxul.so 是什么版本。
现在,我的输出 .so 文件具有以下依赖项:
readelf -V myext.so
0x0080: Version: 1 File: libxul.so Cnt: 1
0x0090: Name: xul24.0 Flags: none Version: 9
Run Code Online (Sandbox Code Playgroud)
(请注意,这取决于版本“xul24.0”)
导出的函数在 Firefox 版本之间不会发生变化。所以,我想删除这个版本指令。
当尝试加载到 Firefox 26 时,LD_DEBUG=file 会出现以下错误:
/usr/lib/firefox/libxul.so: error: version lookup error:
version `xul24.0' not found (required by /.../myext.so) (fatal)
Run Code Online (Sandbox Code Playgroud)
对于 Firefox 26 版本的 libxul.so,版本为'xul26'.
那么,如何防止 ld 将版本信息嵌入到我的库中呢?