大佬教程收集整理的这篇文章主要介绍了linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是情况:
我正在使用自动工具管理的C项目.目标平台是RHel5 64位,安装了两个版本的gcc:
> gcc 4.1.2安装在/ usr中
> gcc 4.3.5安装在/local/opt/gcc-4.3.5中
当我使用默认的gcc版本(4.1.2)构建我的项目时,一切顺利,但是当我切换到gcc 4.3.5时,我在链接时得到这个错误:
/local/opt/gcc-4.3.5/lib/../lib/libstdc++.so: Could not read symbols: File in wrong format collect2: ld returned 1 exit status
似乎libtool在命令行中硬编码到32位版本的libstdc .so的路径,而它应该是64位版本.
更准确地说,失败的libtool调用是:
/bin/sh ./libtool --tag=CXX --mode=link g++ -m64 -o libfoo.la -rpath /local/opt/foo/lib src/foo/libfoo_la-bar1.lo src/foo/libfoo_la-bar2.lo
它由libtool翻译成:
g++ -shared -nostdlib /usr/lib/../lib64/crti.o /local/opt/gcc-4.3.5/lib/gcc/x86_64-unkNown-linux-gnu/4.3.5/crtbegins.o src/foo/.libs/libfoo_la-bar1.o src/foo/.libs/libfoo_la-bar2.o -Wl,--rpath -Wl,/local/opt/gcc-4.3.5/lib/../lib -Wl,/local/opt/gcc-4.3.5/lib/../lib -L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unkNown-linux-gnu/4.3.5 -L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unkNown-linux-gnu/4.3.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unkNown-linux-gnu/4.3.5/../../.. /local/opt/gcc-4.3.5/lib/../lib/libstdc++.so -lm -lc -lgcc_s /local/opt/gcc-4.3.5/lib/gcc/x86_64-unkNown-linux-gnu/4.3.5/crtends.o /usr/lib/../lib64/crtn.o -m64 -Wl,-soname -Wl,libfoo.so.0 -o .libs/libfoo.so.0.0.0
我应该精确地指出,我使用从默认gcc到gcc 4.3.5的方法如下:
$export PATH=/local/opt/gcc-4.3.5/bin:$PATH $export LD_LIBRARY_PATH=/local/opt/gcc-4.3.5/lib:/local/opt/gcc-4.3.5/lib64:$LD_LIBRARY_PATH $export GCC_HOME=/local/opt/gcc-4.3.5
我对所有这些工具来说都很新,所以我怀疑我在做错事.如果有人可以给我一个关于如何解决这个问题的线索,我将非常感激.
干杯
以上是大佬教程为你收集整理的linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc全部内容,希望文章能够帮你解决linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。