linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc

linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc,第1张

概述首先,我想让你知道这是我在StackOverflow上的第一篇文章,所以我希望通过提出一个非常愚蠢的问题,我不会愚弄自己.我已经在这个问题上搜索了几天了,到目前为止我找不到任何答案. 这是情况: 我正在使用自动工具管理的C项目.目标平台是RHEL5 64位,安装了两个版本的gcc: > gcc 4.1.2安装在/ usr中 > gcc 4.3.5安装在/local/opt/gcc-4.3.5中 当 首先,我想让你知道这是我在StackOverflow上的第一篇文章,所以我希望通过提出一个非常愚蠢的问题,我不会愚弄自己.我已经在这个问题上搜索了几天了,到目前为止我找不到任何答案.

这是情况:

我正在使用自动工具管理的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 formatcollect2: 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.osrc/foo/.libs/libfoo_la-bar1.osrc/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

我对所有这些工具来说都很新,所以我怀疑我在做错事.如果有人可以给我一个关于如何解决这个问题的线索,我将非常感激.

干杯

解决方法 我刚刚找到了我自己的问题的答案:除了正确设置LD_liBRARY_PATH,我需要将参数LDFLAGS = -L / local / opt / gcc-4.3.5 / lib64传递给配置脚本. 感谢大家的投入. 总结

以上是内存溢出为你收集整理的linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc全部内容,希望文章能够帮你解决linux – libtool与64位目标平台上的32位版本的libstdc .so连接,当安装了多个版本的gcc所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存