




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、构建嵌入式Linux编译环境,2,什么是交叉编译?,在嵌入式开发中经常会提到交叉编译的概念,那么究竟什么是交叉编译呢? 交叉编译就是,在一种体系结构下的机器上编译出能够在另外一种体系结构下运行的应用程序的编译过程,3,交叉编译器从何而来?,交叉编译器是通过编译一系列GNU工具及库文件得到的,这些工具包括: Binutils: GNU的一个工具包,其中包括汇编器、连接器、归档器等等一系列工具 Gcc:主要提供C语言编译器,同时还支持其它多种语言 Glibc:提供标准的C/C+库 Kernel include files:为建立bootstrap gcc提供内核头文件,4,构建编译环境的整体流程,
2、5,构建步骤,下载Binutils、gcc、glibc以及内核源代码,和针对该版本的补丁 通过本机上的gcc编译Binutils,生成汇编器、连接器等编译工具 编译gcc源码生成bootstrap gcc,用来编译glibc 使用bootstrap gcc结合glibc和内核源码,便以生成glibc的标准c库 再次编译gcc源码,生成完整的gcc编译器,包含g+编译器,6,详细步骤(一),下载Binutils、gcc、glibc、内核源代码及相关版本的补丁 所有的GNU工具都可以到GNU的官方网站上下载 内核源代码下载地址 http:/www.kernel.
3、org/ 针对ARM体系机构的补丁 .uk/,7,详细步骤(二),建立工作目录 为了使我们的编译结果更清晰,更规范,我们就必须建立一列的工作目录,$pwd /home/liang $mkdir embedded $cd embedded $mkdir build-tools kernel tools $ls build-tools kernel tools,总的工作目录,编译工具目录,内核源码目录,生成工具链目录,8,详细步骤(二),声明环境变量,$export PRJROOT=/home/zxt/embedded $export TARGET=a
4、rm-linux $export PREFIX=$PRJROOT/tools $export TARGET_PREFIX=$PREFIX/$TARGET $export PATH=$PREFIX/bin:$PATH,9,详细步骤(二),建立build-tools下子目录 为了把源码和编译时生成的文件分开,一般的编译工作不在的源码目录中,要另建一个目录来专门用于编译,$cd $PRJROOT/build-tools $mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch,编译binutils的目录,编译bootst
5、rap gcc的目录,编译全部gcc的目录,编译glibc的目录,gcc补丁,10,详细步骤(二),将各个工具包的源代码放置在build-tools 目录下 解压缩各个工具包,$ls binutils-2.10.1.tar.bz2 build-gcc gcc-patch build-binutls build-glibc glibc-2.2.3.tar.gz build-boot-gcc gcc-2.95.3.tar.gz glibc-linuxthreads-2.2.3.tar.gz,11,详细步骤(三),配置内核并生成内核头文件 对内核源码下include目录进行修改,$cd includ
6、e $ln -s asm-arm asm $cd asm $rm arch proc $ln -s arch-s3c2410 arch $ln -s proc-armv proc,For 32bit ARM,针对不同的平台使用不同的arch,12,详细步骤(三),配置内核生成头文件 生成所需的内核头文件,$make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig,体系结构,交叉编译工具,include/linux/version.h include/linux/autoconf.h,13,详细步骤(三),安装内核头文件到$TARGET_PREFIX目录
7、下,$mkdir -p $TARGET_PREFIX/include $cp -r $PRJROOT/kernel/linux-2.4.21/include/linux $TARGET_PREFIX/include $cp -r $PRJROOT/kernel/linux-2.4.21/include/asm-arm $TARGET_PREFIX/include/asm,14,详细步骤(四),编译并安装Binutils,15,16,详细步骤(五),修改 gcc配置内容 修改gcc-2.95.3源码中gcc/config/arm/t-linux文件的配置内容。 修改TARGET_LIBGCC2-
8、CFLAGS = -fomit-frame-pointer -fPIC配置内容为:,TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D_gthr_posix_h,17,详细步骤(五),编译并安装bootstrap gcc,$cd build-boot-gcc $./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -without-headers -enable-languages=c -disable-threads $make all-gcc $ma
9、ke install-gcc,现在还没有glibc头文件,只支持C语言,去掉thread功能,因为需要glibc的支持,18,19,详细步骤(六),建立glibc库 为glibc打补丁,$cd $PRJROOT/build-tools $tar -xvzf glibc-2.2.3.tar.gz $tar -xzvf glibc-linuxthreads-2.2.3.tar.gz -directory=glibc-2.2.3,为glibc打上thread补丁,20,详细步骤(六),配置glibc,$cd build-glibc $CC=arm-linux-gcc ./glibc-2.2.3/co
10、nfigure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include,指定使用bootstrap gcc,使用thread包,指定内核头文件位置,$make $make install_root=$TARGET_PREFIX prefix= install,21,详细步骤(六),修改$TARGET_PREFIX/lib 目录下的libc.so 修改前 修改后 原因 这样修改以后链接器ld就会在libc.so目录下搜索它所需要的库,GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a),GROUP ( libc.so.6 libc_nonshared.a),22,23,详细步骤(七),建立完整的gcc,$cd $PRJROOT/build-to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论