制作ARM Linux交叉编译环境

您所在的位置:网站首页 linux配置arm交叉编译器 制作ARM Linux交叉编译环境

制作ARM Linux交叉编译环境

#制作ARM Linux交叉编译环境| 来源: 网络整理| 查看: 265

一、准备工作

首先需要一台运行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.gztar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4 //unsuccess 这样我们在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 > Unable to find the Ncurses libraries.>>>> You must have Ncurses installed in order>> to use make menuconfigmake[1]: * [ncurses] Error 1make[1]: Leaving directory `/home/lhs/HHARMMX21/linux-2.4.20/scripts/lxdialogmake: * [menuconfig] Error 2解决方法:执行命令:sudo apt-get install ncurses-dev即可!(ncurses 用于make menuconfig界面显示) make menuconfig 在System Types中选择正确的硬件类型 make dep 之后执行如下操作 mkdir $TARGET_PREFIX/include cp-r $KERNEL_SOURCE_LOCATION/include/asm-arm $TARGET_PREFIX/include/asm

[cp -r kernel/linux-2.4.21/include/asm-arm arm/tool-chain/arm-linux/include/asm] cp-r $KERNEL_SOURCE_LOCATION/include/linux $TARGET_PREFIX/include/linux[cp -r kernel/linux-2.4.21/include/linux arm/tool-chain/arm-linux/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=arm/tool-chain --with-headers=arm/kernel/linux-2.4.21/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//unsuccess 这时$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//unsuccess6、 创建功能健全的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 install7,至此我们成功的创建了ARM Linux的交叉编译工具



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3