【发布时间】:2009-08-07 15:06:25
【问题描述】:
一个类似(描述较少)的帖子是here。
我正在尝试使用 Ubuntu 上的最新版本推出自己的工具链,并希望这里有足够多的 Linux 社区,以便我可以在某些问题出现时获得具体的建议。
在大家的帮助下,我希望看到这最终变成有用的参考。
首先,几乎每个人都提到的“Crosstool”有点过时(2006 年),而现在似乎正在携带火炬的“Crosstool-NG”在我的机器上失败了。我宁愿调试进程本身而不是脚本(这似乎需要我理解进程)。
以下是我目前工作的基本步骤;目前我一直在尝试编译第一遍 GCC。
失败的地方...
因为缺少包含“crti.o”的交叉编译库而失败:
# ./gcc-4.4.1/configure --target=arm-linux --disable-thread --enable-langauges=c
/bin/bash ../../../gcc-4.4.1/libgcc/../mkinstalldirs .
/usr/src/gnu-4.4.1-build/./gcc/xgcc -B ........
/usr/local/arm-linux/bin/ld: crti.o No such file: No such file or directory
collect2: ld returned 1 exit status
make[2]: *** [libgcc_s.so] Error 1
make[2]: Leaving directory `/usr/src/gnu/gcc-4.4.1-build/arm-linux/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/usr/src/gnu/gcc-4.4.1-build'
make: *** [all] Error 2
构建步骤
在“全新”配置的 Ubuntu 9.04 安装中,以下是我迄今为止完成的步骤:
#New configuration of Ubuntu 9.04
sudo updatedb
sudo apt-get install build-essential subversion
# For kernel configuration
sudo apt-get install libncurses5-dev
# For building GCC
sudo apt-get install libgmp3-dev libmpfr-dev
#Get Linux Headers for GCC/GLIBC compilations
# I use a hacked Linux from Artilla,
pushd ~ && svn co http://.../linux m501-linux && cd !$
make ARCH=arm m501_defconfig
make ARCH=arm menuconfig
sudo mkdir /usr/local/arm-linux/include
sudo cp -dR include/asm-arm /usr/local/arm-linux/include/asm
sudo cp -dR include/linux /usr/local/arm-linux/include/linux
cd /usr/local/arm-linux/
sudo ln -s include sys-include
popd
#Get sources:
cd /usr/src/
sudo su root
mkdir gnu
ftp ftp.gnu.org
# get gnu/binutils/binutils-2.19.1.tar.bz2
# get gnu/gcc/gcc-4.4.1/gcc-4.4.1.tar.bz2
# get gnu/glibc/glibc-2.10.1.tar.bz2
# get gnu/gdb/gdb-6.8.tar.bz2
#Build Binutils
bzcat binutils-2.19.1.tar.bz2 | tar -xv
mkdir binutils-2.19.1-build && cd !$
cp ../binutils-2.19.1/gas/config/tc-arm.c ./tc-arm.c
sed -r 's/(as_bad[ \t]*\()(.+\[.+\]\))/\1\"%s\",\2/' < ./tc-arm.c > ../binutils-2.19.1/gas/config/tc-arm.c
rm ./tc-arm.c
../binutils-2.19.1/configure --target=arm-linux
make && make install && cd ..
#Build GCC
bzcat gcc-4.4.1.tar.bz2 | tar -xv
mkdir gcc-4.4.1-build && cd !$
../gcc-4.4.1/configure --target=arm-linux --disable-thread --enable-langauges=c -with-headers=/usr/local/arm-linux/include
make
【问题讨论】:
-
企鹅,企鹅..无处不在! :)
-
抱歉,我误读了您的问题,我以为您知道目标主机上会存在正确的 libc .. 而您只是在外国架构上进行编译。好吧,至少,你现在有了一个工作的 ARM 工具链 :)
标签: linux cross-compiling gnu-toolchain