编译gcc-4.1

编译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

不幸的是,我被迫使用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 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将其文件放在非标准位置,而编译器无法找到它们。