gpt4 book ai didi

linux - 构建 ARM GNU 交叉编译器

转载 作者:IT王子 更新时间:2023-10-29 00:05:53 25 4
gpt4 key购买 nike

类似的(描述性较差的)帖子是 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 交叉编译是一场噩梦。这不是我的意见,让我们看看其他人怎么说......

Building a gcc / glibc cross-toolchain for use in embedded systems development used to be a scary prospect, requiring iron will, days if not weeks of effort, lots of Unix and Gnu lore, and sometimes willingness to take dodgy shortcuts. ( http://www.kegel.com/crosstool/ )

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

我在我的笔记本电脑上使用 32 位 Ubuntu。有用于 AVR 交叉编译器甚至 Z80 的 deb 包,但没有用于 ARM 的 - 为什么?好的,我们必须编译一个。我们走吧。工具链的编译过程让我有点困惑。 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的虚拟机上使用这个编译器。)

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com