当前位置:  开发笔记 > 编程语言 > 正文

构建ARM GNU交叉编译器

如何解决《构建ARMGNU交叉编译器》经验,为你挑选了1个好方法。

一个类似的(描述性较差),职位是在这里.

我正在尝试使用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

ern0.. 7

欢迎你,你并不孤单.

故事

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

构建用于嵌入式系统开发的gcc/glibc交叉工具链曾经是一个可怕的前景,需要铁,即使不是几周的努力,很多Unix和Gnu传说,有时愿意采取狡猾的捷径.(http://www.kegel.com/crosstool/)

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

我在笔记本上使用32位Ubuntu.有AVR交叉编译器的deb包,甚至是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 ++版本.

(我的朋友有一台Mac,他在与它斗争一周后也没有编译工具链.他现在在运行Ubuntu的VM上使用这个编译器.)



1> ern0..:

欢迎你,你并不孤单.

故事

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

构建用于嵌入式系统开发的gcc/glibc交叉工具链曾经是一个可怕的前景,需要铁,即使不是几周的努力,很多Unix和Gnu传说,有时愿意采取狡猾的捷径.(http://www.kegel.com/crosstool/)

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

我在笔记本上使用32位Ubuntu.有AVR交叉编译器的deb包,甚至是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 ++版本.

(我的朋友有一台Mac,他在与它斗争一周后也没有编译工具链.他现在在运行Ubuntu的VM上使用这个编译器.)

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有