问题描述
当我想在我的 ubuntu 12.04 (x86_64) 上制作 gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) 时。当前有效的 gcc 是 4.6.2。 \n我做了:
./configure
然后
make
但是我收到这个错误
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
网上搜索了一下,好像crti
的位置有问题。这些文件在系统上可用
# find /usr/ -name crti*
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o
还安装了 libc6 开发包
# dpkg -l | grep libc6
ii libc6 2.15-0ubuntu10.3 Embedded GNU C Library: Shared libraries
ii libc6-dbg 2.15-0ubuntu10.3 Embedded GNU C Library: detached debugging symbols
ii libc6-dev 2.15-0ubuntu10.3 Embedded GNU C Library: Development Libraries and Header Files
ii libc6-dev-i386 2.15-0ubuntu10.3 Embedded GNU C Library: 32-bit development libraries for AMD64
ii libc6-i386 2.15-0ubuntu10.3 Embedded GNU C Library: 32-bit shared libraries for AMD64
ii libc6-pic 2.15-0ubuntu10.3 Embedded GNU C Library: PIC archive library
我该如何解决这个问题?
更新:
添加这些之后
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
这个问题就解决了。然而现在我得到了
/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
collect2: ld returned 1 exit status
最佳办法
这是启动板中报告的 BUG,有一个解决方法:
在32位平台上编译64位程序:
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
对于 32 位本机:
LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH
在您的 .bashrc 文件中(或从控制台运行)足以让 GCC 找到库的新位置。
谢谢。请伊恩·布克劳 (ibuclaw) 指出正确的方向。
12.10 32 位
hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
hhlp@hhlp:~$
LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
12.10 64 位
hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
hhlp@hhlp:~$
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
次佳办法
就我而言,Ubuntu 16.04
我根本没有 crti.o
:
$ find /usr/ -name crti*
所以我安装开发者包:
sudo apt-get install libc6-dev