AIX 6.1 上的编译错误 - 未定义符号:.__gcc_qsub

Posted

技术标签:

【中文标题】AIX 6.1 上的编译错误 - 未定义符号:.__gcc_qsub【英文标题】:Compilation error on AIX 6.1 - Undefined symbol: .__gcc_qsub 【发布时间】:2011-12-10 07:34:52 【问题描述】:

我正在运行 AIX 6.1 和 GCC 4.2,当我尝试使用以下命令编译 SQLite(我认为是 3.7.5 版)时:

gcc -maix64 -D_FILE_OFFSET_BITS=64 -c -fPIC -DHAVE_USLEEP ./sqlite/sqlite3.c -o ./sqlite/sqlite3.o
gcc -maix64 -shared –L/usr/lib/threads -o ./sqlite/libsqlite3.so ./sqlite/sqlite3.o –ldl -lpthread

我收到以下错误:

ld: 0711-317 ERROR: Undefined symbol: .__gcc_qsub
ld: 0711-317 ERROR: Undefined symbol: .__gcc_qmul
ld: 0711-317 ERROR: Undefined symbol: .__gcc_qadd
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

你知道这是什么原因造成的吗?

任何帮助将不胜感激;-)

更新1:

这里是详细的输出:

/usr/bin/gcc -maix64 -v -shared-libgcc -L/usr/lib/threads -o ./sqlite/libsqlite3.so ./sqlite/sqlite3.o -lpthread
Using built-in specs.
Target: powerpc-ibm-aix6.1.0.0
Configured with: ../configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++,java --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --host=powerpc-ibm-aix6.1.0.0 --target=powerpc-ibm-aix6.1.0.0 --build=powerpc-ibm-aix6.1.0.0 --disable-libjava-multilib
Thread model: aix
gcc version 4.2.0
 /opt/freeware/libexec/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/collect2 -bpT:0x10000000 -bpD:0x20000000 -btextro -bnodelcsect -b64 -o ./sqlite/libsqlite3.so /lib/crt0_64.o -L/usr/lib/threads -L/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/ppc64 -L/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0 -L/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/../../.. ./sqlite/sqlite3.o -lpthread -lgcc_s /opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/ppc64/libgcc.a -lc -lgcc_s /opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/ppc64/libgcc.a
collect2: library libgcc_s not found

【问题讨论】:

听起来它选择了错误版本的libgcc,它被 gcc 驱动程序隐式添加到链接器调用中。您能否重复您的第二个命令,将-v 附加到命令行,然后发布输出?这将显示驱动程序用于运行链接器的命令行。 您好,已将 -static-libgcc 添加到该行,现在它抱怨未定义的符号:.main 有什么想法吗?我现在将发布 -v 结果...thnx :-) 我太傻了,我忘了-shared,好像不是更好...thnx 嘿 Zack,我已经添加了上面的详细输出以满足您的兴趣....但是 -static-libgcc 似乎有帮助 /opt/freeware/lib/gcc 中是否有 libgcc_s.something 或other? 【参考方案1】:

尝试将-lm 添加到链接命令以包含数学库。

如果没有,请检查此page 并搜索“AIX”。

【讨论】:

您好,谢谢您的提示....我明天一定会尝试一下...如果不起作用,还有其他想法吗? 编辑了另一个建议。我实际上并不认为 -lm 会对您有所帮助,因为这些符号在 libgcc 内,但值得一试。

以上是关于AIX 6.1 上的编译错误 - 未定义符号:.__gcc_qsub的主要内容,如果未能解决你的问题,请参考以下文章

mac上的架构x86_64错误的未定义符号

编译时错误“架构 x86_64 的未定义符号”是啥意思?

C++ 的 AIX xlC 交叉编译/链接未找到 C 符号

MAC OS X 10.8 上的 gcc 4.8 抛出“架构 x86_64 的未定义符号:”

编译时 x86_64 的未定义符号

为设备编译 Boost 1.54 XCode5 - 致命错误:后端错误:符号“___umodsi3”不能在减法表达式中未定义