我正在尝试重新编译现有的 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)
因此,链接器无法解析库提供的符号。
是否有任何选项可以选择名称修饰算法?
我可以引入地图或明确定义损坏的名称吗?