小编Her*_*ann的帖子

GNU 链接器:适应名称修改算法的更改

我正在尝试重新编译现有的 C++ 应用程序。不幸的是,我必须依赖一个专有库,我只有一个预编译的静态存档。

我使用 g++ 版本 7.3.0 和 ld 版本 2.30。
无论它是用什么 GCC 版本编译的,它都是古老的。

头文件定义了方法:

class foo {
    int bar(int & i);
}
Run Code Online (Sandbox Code Playgroud)

如图nm lib.a所示,库存档包含相应的导出函数:

T bar__4fooRi
Run Code Online (Sandbox Code Playgroud)

nm app.o显示了我最近使用不同类型的名称修饰的编译器:

U _ZN4foo9barERi
Run Code Online (Sandbox Code Playgroud)

因此,链接器无法解析库提供的符号。

是否有任何选项可以选择名称修饰算法?
我可以引入地图或明确定义损坏的名称吗?

c++ name-mangling ld

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

标签 统计

c++ ×1

ld ×1

name-mangling ×1