类似(描述较少)的帖子是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

最佳答案

欢迎,您并不孤单。

的故事

我不知道为什么ARM交叉编译是一场噩梦。让我们看看别人说的不是我的意见...



我的ARM计算机(GuruPlug)在Debian上运行,因此我只需要一个标准的G++编译器,而无需进行任何调整。

我在笔记本电脑上使用32位Ubuntu。有AVR交叉编译器甚至Z80的deb软件包,但没有ARM的deb软件包-为什么?好,我们必须编译一个。我们走吧。工具链的编译过程对我来说有点令人困惑。 14k行长的Makefile,谢谢。

经过几天(和几天)后,我失败了。

解决方案

终于,我找到了一个开箱即用的解决方案。我刚刚下载了这些东西的精简版:http://www.codesourcery.com/sgpp/lite_edition.html,现在我很高兴。它有一个丑陋的安装程序,但它可以工作。它说:
arm-none-linux-gnueabi-g++(Sourcery G++ Lite 2010q1-202)4.4.1,它是最新的G++版本。

(我的 friend 有Mac,在与该工具打了一个星期后,他也未能编译该工具链。他现在在运行Ubuntu的VM上使用此编译器。)

关于linux - 构建ARM GNU Cross编译器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1245295/

10-16 20:21