尝试对在 AIX 5.3 上编译的可执行文件或共享库执行 objdump 时,我多次收到此错误消息。对于这台机器上的任何其他可执行文件,它都可以正常工作。这个可执行文件也会在运行时崩溃(在字符串赋值时)。
我不确定它是否重要,但在链接过程中我有几个警告,例如: ld: 0711-224 警告:重复符号:非虚拟 thunk 到 XYZ::~XYZ() 整个可执行文件是直接从 .o 文件构建的(和一个外部库,但我确信它很好)。
有些东西告诉我它可以连接到弱符号,但我不知道如何解决这个问题。知道可能出了什么问题,或者我可以检查什么以继续进行此操作吗?
我还尝试将所有 cpp 文件包含在一个大文件中,然后编译它。我仍然遇到分段错误,但在其他地方(现在在 g_strXXXXX.erase() - 擦除全局字符串)。部分堆栈跟踪如下所示:
(...)
.#3 0x101d8534 in __static_initialization_and_destruction_0(int, int) (__initialize_p=1, __priority=65535) at ../../licserver/someclass1.cpp:4
.#4 0x101d8df0 in GLOBAL _I_fc_softc () at ../../shared/someclass1.cpp:225
.#5 0x103c81fc in GLOBAL _FI_licserver_unittest ()
.#6 0xd03aadb0 in mod_init1 () from /usr/lib/libc.a(shr.o)
.#7 0xd03aacc4 in __modinit () from /usr/lib/libc.a(shr.o)
.#8 0x100001d4 in __start () (gdb) GLOBAL _I_fc_softc
所以看起来 libc 或 libstdc++ 有问题?