如何安装arm-liunx交叉编译环境?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何安装arm-liunx交叉编译环境?相关的知识,希望对你有一定的参考价值。

我是新手,想学arm,正在要搭建一个交叉编译环境。得知ucliunx系统用arm-elf-tools,liunx系统用arm-liunx编译环境。前者是针对arm7,后者是针对有MMU的arm。不知道理解的对不对,请高人指点。
说实话,我不知道ucliunx系统怎么装。不吝赐教。
想知道arm-liunx和arm-elf-tools在使用上有什么不同?
目前有介绍arm-elf-tools的资料,但是好像要学arm-liunx,如果有arm-liunx方面资料的高人,也请指点。
问题让大虾们见笑了!
二楼说的是arm-elf-tools的安装吧,我想知道arm-linux和arm-elf-tools的不同,因为据我所知前者是对arm7开发的,后者是对arm9开发的。我想知道的是arm-linux或者说是对arm9的交叉编译环境。
三楼说的开发板是会自带编译环境,但是我担心会缺乏通用性,因为那些编译环境都是别人弄的,可能会有些不明白的或者不通用性,你认为呢?
感谢两位!

sh ./arm-elf-tools-20040427.sh安装
----------------------------------------------
一、准备工作

首先需要一台运行Linux操作系统的PC以完成我们的编译工作。

其次要准备如下一些源文件。

1、源文件准备

binutils-2.14.tar.gz

ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz

gcc-core-2.95.3.tar.gz

ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz

gcc-g++2.95.3.tar.gz

ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz

glibc-2.2.4.tar.gz

ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz

glibc-linuxthreads-2.2.4.tar.gz

ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz

linux-2.4.21.tar.gz

ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz

patch-2.4.21-rmk1.gz # linux kernel patch for arm

ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz

binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。

gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。

gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。

glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。

glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。

linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。

patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持ARM的硬件平台。

2、工作目录搭建

我们创建如下的目录树结构

mkdir arm

mkdir tool-chain

mkdir build-dir

mkdir src-dir

mkdir setup-dir

mkdir kernel

arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。

tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。

setup-dir这个目录用来存放我们下载的压缩包。

src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。

kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。

build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。

cd ./src-dir

tar –xvzf ../setup-dir/ binutils-2.14.tar.gz

tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz

tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz

tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4

这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。

cd ../build-dir

mkdir ../build-dir/build-binutils

mkdir ../build-dir/build-gcc

mkdir ../build-dir/build-glibc

我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。

cd ../kernel

tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz

cd ./linux-2.4.21

patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1

二、开始创建

1、 确定几个系统变量

cd ../../

export TARGET=arm-linux

export PREFIX=../arm/tool-chain

export TARGET_PREFIX=$PREFIX/$TARGET

export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21

export PATH=$PREFIX/bin:$PATH

几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。

TARGET这个变量对于ARM体系的目标机来说取值为arm-linux,对于其他体系结构的机器如ppc,mips的取值的详细清单可以参见glibc目录下的INSTALL文档.

2、 创建binutils

运行如下命令来创建binutils

cd ./build-dir/build-binutils

configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX

make

make install

这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。

3、 编译内核

cd ../../kernel/linux-2.4.21

改Makefile文件使

ARCH = arm

CROSS_COMPILE=arm-linux-

make menuconfig

在System Types中选择正确的硬件类型

make dep

之后执行如下操作

mkdir $TARGET_PREFIX/include

cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm \

RGET_PREFIX/include/asm

cp dR $KERNEL_SOURCE_LOCATION/include/linux \

RGET_PREFIX/include/linux

4、 创建boot-trap gcc,这个GCC没有glibc库的支持,所以只能用于编译内核,bootloader等,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和bootloader那么,就可以到此结束。

cd ../../build-dir/build-gcc

../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \

--with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c \

--disable-threads

然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在

TARGET_LIBGCC2_CFLAGS中添加如下两个定义

-Dinhibit-libc –D__gthr_posix_h

make

make install

这时$PREFIX/bin下创建了一些文件,主要创建了arm-linux-gcc。

5、 创建gblic

cd ../build-glibc

export CC=arm-linux-gcc

../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX \

--enable-add-ons

make

make install

将glibc库安装完之后,我们要到$TARGET_PREFIX/lib这个目录下修改libc.so文件,将其中

GROUP(/lib/libc.so.6 /lib/libc_noshared.a)

这个命令脚本中的/lib 的绝对路径去掉, 也就是改为如下的形式

GROUP(libc.so.6 libc_noshared.a)

这样下一步创建完整的编译器时,才不至于导致错误.

6、 创建功能健全的GCC,并创建G++

在成功创建了libc之后,我们就可以创建功能丰富的GCC编译器了,并且可以创建支持编译C++程序的G++。

cd ../../src-dir

tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz

cd ../build-dir/build-gcc

export CC=gcc

../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \

–enable-language=c,c++

然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在

TARGET_LIBGCC2_CFLAGS中去除如下两个定义

-Dinhibit-libc –D__gthr_posix_h

make

make install

7,至此我们成功的创建了ARM Linux的交叉编译工具。

------------------------------------------------------
可以去www.arm16.com看看
参考技术A 建议 去 大论坛 如 CU UC 等等 去看看

CU www.chinaunix.net
UC www.unix-center.net

祝你顺利
参考技术B 建议你按照你的板子的实验手册做,不同的板子差别很大。也不一样的操作 参考技术C 顶嵌嵌入式培训:400-661-5264

如何在Ubuntu下建立交叉编译环境

1.安装交叉编译环境 sudo apt-get install gcc g++ libcc1 libg++ make gdb
2.安装交叉编译器 ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ 下载 cross -3.2.tar.bz2或者懒得去找干脆
wget ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ cross -3.2.tar.bz2
解压
sudo tar jxvf /home/zhaifang/cross -3.2.tar.bz2
sudo mv /home/zhaifang/usr/local/arm /usr/local
3.交叉编译器加入路径 sudo vi /etc/bash.bashrc后面加入
if [ -d /usr/local/arm ] ; then
PATH=/usr/local/arm/bin:"$PATH"
fi
4.使环境生效 #source /etc/profile
5.检查 echo $PATH 出现/usr/local/arm/bin说明成功了
6.测试 arm-linux-gcc -v
参考技术A 第一步,你需要下载QT源代码(4.8的编译比较容易),然后通过 ./configure (参数自己定,不懂看readme)接下来就是在QT CREATE里面配置了,如下: 工具-->选项--->构建和运行 1. 编译器: 点击添加:

以上是关于如何安装arm-liunx交叉编译环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu下建立交叉编译环境

如何在ubuntu下搭建qt交叉编译环境

如何更改ubuntu中交叉编译工具链?

虚拟机linux怎么查看交叉编译环境

QT交叉编译环境

嵌入式Linux之旅——环境搭建篇之交叉编译工具的安装