【发布时间】:2019-05-11 04:34:45
【问题描述】:
我能够成功构建我的代码,但在尝试运行它时出现以下错误。我在 AIX7.1 上使用 GCC4.8.5。
0509-130 Symbol resolution failed for libadobelinguistic.a because:
0509-136 Symbol _ZNSt5__padIcSt11char_traitsIcEE6_S_padERSt8ios_basecPcPKcllb (number 94) is not exported from
dependent module /user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib/libstdc++.a(libstdc++.so.6).
0509-022 Cannot load module .
0509-026 System error: Cannot run a file that does not have a valid format.
0509-192 Examine .loader section symbols with the
'dump -Tv' command."}
正如在几个地方所建议的那样,我使用-Wl,--no-undefined 标志在编译时使项目失败。但编译并没有失败。
解构函数:
std::__pad<char, std::char_traits<char> >::_S_pad(std::ios_base&, char, char*, char const*, long, long, bool)
我找不到对这个函数的引用。
此外,在少数地方建议如果出现此类错误,您需要在 AIX 的情况下设置 LIBPATH 变量。我将 libpath 变量设置为
LIBPATH=/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib:/opt/freeware/lib:/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.5:/opt/freeware/lib/pthread/ppc64
还是不行。
我找到了对它的引用 https://sourceforge.net/p/slo/feature-requests/4/。但它没有帮助。
编辑:似乎 libstdc++ 在 AIX7.1 上引起了问题。我们有 gcc4.8.5 的系统 libstdc++ 和 libstdc++。当我链接到系统 libstdc++ gdb 成功运行但我的程序失败但是当我在 gcc4.8.5 中设置 libstdc++ 的路径时。 GDB 不运行,但我的可执行文件运行。似乎系统 libstdc++ 和 gcc4.8.5 libstdc++ 不兼容。
【问题讨论】:
-
你从哪里得到这个
libadobelinguistic.a文件? -
共享位置。强制执行。 linux的相应文件工作正常。使用 gcc4.8.5 的 Linux 机器上没有错误
标签: c++ linker aix libstdc++ gcc4.8