编译gcc-4.1
不幸的是,我被迫使用gcc-4.1,我使用的是debian wheezy。因为gcc-4.1不在存储库中,所以我尝试从源代码构建gcc 但我得到了一个编译错误:编译gcc-4.1,gcc,compiler-errors,debian,Gcc,Compiler Errors,Debian,不幸的是,我被迫使用gcc-4.1,我使用的是debian wheezy。因为gcc-4.1不在存储库中,所以我尝试从源代码构建gcc 但我得到了一个编译错误: /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when sear
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crtn.o' is incompatible with i386 output
看起来ld
选择了错误版本的库,但我检查了我的/usr/lib32
和/usr/lib/x86\u 64-linux-gnu/
,其中包含以下文件:
/usr/lib32/libc.a
/usr/lib32/libc.so
/usr/lib32/crtn.o
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/libc.a
/usr/lib/x86_64-linux-gnu/libc.so
/usr/lib/x86_64-linux-gnu/crtn.o
/usr/lib/x86_64-linux-gnu/crti.o
并且ld
应该可以访问它们
~$ echo $LIBRARY_PATH
/usr/lib/x86_64-linux-gnu:/usr/lib32/
所以我不知道问题出在哪里。LD\u LIBRARY\u PATH仅用于运行已链接的程序 配置gcc时,可能需要设置
LDFLAGS
:
./configure LDFLAGS="-L/usr/lib32" .....
它可能是主机的
LDFLAGS\u
或LIBS
或类似的东西。LD\u库路径
仅用于运行已链接的程序
配置gcc时,可能需要设置LDFLAGS
:
./configure LDFLAGS="-L/usr/lib32" .....
它可能是主机的LDFLAGS或者LIBS之类的东西。我设法解决了这个问题 使用以下命令运行配置:
./configure --disable-multilib ...
但是,我在makeinfo
中遇到了另一个问题,如果您的>=4.10
版本较新,那么configure可能找不到它。所以生成的makefile中的简单修复对我来说很有用:
更改此行:
MAKEINFO = /home/lecopivo/Downloads/gcc412/gcc412/gcc-4.1.2/missing makeinfo
为此:
MAKEINFO = makeinfo
我觉得很有帮助。我设法解决了这个问题 使用以下命令运行配置:
./configure --disable-multilib ...
但是,我在makeinfo
中遇到了另一个问题,如果您的>=4.10
版本较新,那么configure可能找不到它。所以生成的makefile中的简单修复对我来说很有用:
更改此行:
MAKEINFO = /home/lecopivo/Downloads/gcc412/gcc412/gcc-4.1.2/missing makeinfo
为此:
MAKEINFO = makeinfo
我觉得很有帮助。谢谢,但是
/configure LDFLAGS=“-L/usr/lib32”
没有帮助,我尝试手动修复makefile,但也失败了。添加/configure--disable multilib…
对我来说很有效。真正的问题可能是您的旧GCC没有Debian/Ubuntu构建所需的“multiarch”支持(multiarch不能与multilib混淆)。上次我听说,即使是最新的GCC也没有开箱即用,但那是很久以前的事了。基本上,Debian/Ubuntu将其文件放在非标准位置,编译器无法找到它们。谢谢,但是/configure LDFLAGS=“-L/usr/lib32”
没有帮助,我尝试手动修复makefile,但也失败了。添加/configure--disable multilib…
对我来说很有效。真正的问题可能是您的旧GCC没有Debian/Ubuntu构建所需的“multiarch”支持(multiarch不能与multilib混淆)。上次我听说,即使是最新的GCC也没有开箱即用,但那是很久以前的事了。基本上,Debian/Ubuntu将其文件放在非标准位置,而编译器无法找到它们。