小编Sea*_*ard的帖子

Linux 中 ld 到没有版本信息的库

编译 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 将版本信息嵌入到我的库中呢?

linker ld

5
推荐指数
1
解决办法
3200
查看次数

标签 统计

ld ×1

linker ×1