【求助】ubuntu12.04LTS 64bit编译gcc-4.1.0错误

内核编译和嵌入式产品的设计与开发
回复
fielding_st
帖子: 7
注册时间: 2014-02-22 22:13

【求助】ubuntu12.04LTS 64bit编译gcc-4.1.0错误

#1

帖子 fielding_st » 2014-12-17 21:19

虚拟机环境
平台:ubuntu 12.04 LTS 64bit
由于编译arm的交叉工具链需用到gcc-4.1.0版本, 因此下载源码编译一个。

遇到问题:在make的时候,报如下错误:
make[4]: Leaving directory `/usr/bin/gcc-4.1.0/host-x86_64-unknown-linux-gnu/gcc'
/usr/bin/gcc-4.1.0/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/usr/bin/gcc-4.1.0/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/bin/gcc-4.1.0/gcc-build/x86_64-unknown-linux-gnu/bin/ -B/usr/bin/gcc-4.1.0/gcc-build/x86_64-unknown-linux-gnu/lib/ -isystem /usr/bin/gcc-4.1.0/gcc-build/x86_64-unknown-linux-gnu/include -isystem /usr/bin/gcc-4.1.0/gcc-build/x86_64-unknown-linux-gnu/sys-include -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc/./libgcc.map -o ./libgcc_s.so.1.tmp [...中间省略部分输出信息...]mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && ln -s libgcc_s.so.1 ./libgcc_s.so
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
make[3]: *** [libgcc_s.so] Error 1

上网搜索,得到建议:shell内手动指定路径 export LIBRARY_PATH=/usr/lib/i386-linux-gnu
重新make,仍有错误如下
/usr/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386 architecture of input file `/usr/lib/i386-linux-gnu/crti.o' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/usr/lib/i386-linux-gnu/crtn.o' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status
make[3]: *** [libgcc_s.so] Error 1

我知道这个错误的意思是由于64位系统导致的,但在网上尚未搜索到结果,求指教~谢谢~
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
联系:

Re: 【求助】ubuntu12.04LTS 64bit编译gcc-4.1.0错误

#2

帖子 zhw2101024 » 2014-12-17 22:46

看clfs交叉编译GCC的哪一段,反复看就懂了。
要么是configure参数有误,要么是主机上安装的gcc有问题。
fielding_st
帖子: 7
注册时间: 2014-02-22 22:13

Re: 【求助】ubuntu12.04LTS 64bit编译gcc-4.1.0错误

#3

帖子 fielding_st » 2014-12-18 8:46

zhw2101024 写了:看clfs交叉编译GCC的哪一段,反复看就懂了。
要么是configure参数有误,要么是主机上安装的gcc有问题。
操作步骤:
1. 下载gcc4.1.0,解压到/usr/bin。解压的结果为多了一个/usr/bin/gcc-4.1.0目录
2. 在gcc-4.1.0目录下新建gcc-build,准备安装到此处
3. 修改gcc-4.1.0的configure文件,将 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' 替换为 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|4\.[1-9][0-9]*|[5-9])'
4. 安装texinfo:apt-get install texinfo
(3、4步为了解决 These critical programs are missing or too old: as ld 错误)
5. 在gcc-4.1.0目录执行configure
#./configure --prefix=/usr/bin/gcc-4.1.0/gcc-build
6. 执行make
报错 /usr/bin/ld: i386 architecture of input file `/usr/lib/i386-linux-gnu/crti.o' is incompatible with i386:x86-64 output

主机上的gcc是我装ubuntu12.04时自带的,没做过改动的。
刚才apt-get install build-essential了一下,回显告知这玩意已经是最新的了。

gcc版本号
[root@ubuntu gcc-4.1.0]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
回复