设为首页 加入收藏

TOP

建立ARM Linux GCC交叉编译环境
2014-11-24 12:00:24 来源: 作者: 【 】 浏览:0
Tags:建立 ARM Linux GCC 交叉 编译 环境

crosstool 和ezx-cross的区别,ezx-crosstool是将crosstool精简后加上浮点运算,以及ezx平台的其他一些补丁,适用于ezx平台。


在编译ezx-crosstool时,可能出现PATH_MAX not defined,之类的错误,删除printf语句下面的PATH_MAX即可。


虽然网上的教程和工具已经很多了,但是安装的时间还是超出了我的估计。


现在写出完整的建立过程。中间借鉴了很多人的经验,复制粘贴了他们的教程。。感谢。。


终端可以设置程序关闭时不自动关闭。。。我浪费了很多时间才发现的,这样才能看见错误。


一.电脑补丁和安装


1.sudo apt-get install Bison flex build-essential patch libncurese5-dev


2.降低gcc版本


(1)第一种方法:直接在终端输入安装gcc-4.1


sudo apt-get install gcc-4.1


(2)第二种方法:下载下列软件包:


gcc-4.1-base_4.1.2-23ubuntu3_i386.deb


cpp-4.1_4.1.2-23ubuntu3_i386.deb


然后sudo dpkg –i *.deb


安装就可以了


sudo rm /usr/bin/gcc (删除GCC,它只是个到gcc-4.3.2的软链接文件)


sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)


3、修改sh版本


如果运行


ls -la /bin/sh


看到链接的是 dash ,则请运行以下命令


sudo dpkg-reconfigure dash


选择 no 以删除 dash


二.软件准备


1.下载crosstool-0.43.tar.gz,这个是最重要的。


6个软件,这6个软件版本不是规定的,可以更新。下好了是为了安装快速,否则crosstool会自动下载,耽误时间。


glibc-2.3.6.tar.gz


linux-2.6.26.5.tar.gz


crosstool-0.43.tar.gz


binutils-2.15.tar.gz


glibc-linuxthreads-2.3.3.tar.gz


linux-libc-headers-2.6.12.0.tar.bz2


2 .修改demo-arm-softfloat.sh


$vim demo-arm-softfloat.sh


修改下面两句


TARBALLS_DIR=/home/linux/downloads(你下载下面那6个软件的存放目录)


RESULT_TOP=/home/linux/crosstools(生成工具链目录)


3.修改 gcc-3.4.5-glibc-2.3.6.dat,注意文件名字和你下载的软件包对应,除去后缀名。


$ vim gcc-3.4.5-glibc-2.3.6.dat


修改内容为:


BINUTILS_DIR=binutils-2.15


GCC_DIR=gcc-3.4.5


GLIBC_DIR=glibc-2.3.6


LINUX_DIR=linux-2.6.26.5


LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0


GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6


终端运行demo-arm-softfloat.sh(半小时左右)


此时可能出现的错误:
(1)编译到glibc的时候,在配置的时候会检测gcc的版本,configure 脚本认为gcc-4.3.2版本太老(其实是因为当时gcc还没有这么高的版本,只要不是3.2到4.1之间的版本,都认为too old),不能编译。
这是可以解决的,方法就是修改glibc-2.3.2根目录下的configure 文件中的第1275行:
test -n "$CC" && break
done
if test -z "$CC"; then
ac_verc_fail=yes
else
# Found it, now check the version.
echo "$as_me:$LINENO: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version /([egcygnustpi-]*[0-9.]*/).*$//1/p'`
case $ac_prog_version in
'') ac_prog_version="v. . , bad"; ac_verc_fail=yes;;
3.[2-9]*|4.[0- 3]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;


(2)编译gcc-3.3.6的时候,出现以下错误:
/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
在gcc-3.3.6/gcc/collect2.c中的第1575行改为:
redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777 );
glibc-2.3.2/login/tst-grantpt.c也有一个类似错误,第44行:
fd = open (file, O_RDWR | O_CREAT, 0777 );

(3)*** buffer overflow detected ***: arm-9tdmi-linux-gnu-ar terminated
没办法,只能放弃gcc-4.3.2。

(4)In file included from version.c:33:
/home/tekkaman/working/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:2:1: missing terminating " character
/home/tekkaman/working/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:3:1: missing terminating
" character


解决办法:
sudo mv /bin/sh /bin/sh.old
sudo ln -sf bash /bin/sh
(5)configure: error: no termcap library found
用新立得安装libncurses5-dev(或是apt-get install libncurses5-dev)即可。


如果这时候还没看见done,我也没办法了。。。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇IPv4 IPv6 Socket 编程相关结构 下一篇arm-linux-gcc 4.1.1安装

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)