




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PowerPC交叉编译工具链的制作提交者: Addylee 日期: 2009/11/17 21:13 阅读: 231 摘要:本文主要讨论在X86平台上制作一个PowerPC的交叉编译工具链的方法和步骤。标题 1. 交 叉编译工具链的基本概念2. 准备工作 3. Install Kernel Headers 4. Binutils 5. GCC 第一遍 6. Glibc 7. gcc 第二遍 8. 总结 交叉编译 工具链的基本概念什么是交叉编译工具链,这是许多初学者的首要问题。通常我们已经习惯在X86平台上运行gcc,对源程序进行编译,编 译得到的目标程序,仍然是在X86平台上跑的。而交叉编译工具链就是,需要在某个平台上,对源程序进行编译,但是得到的目标程序却是在另外一个平台上运行 的。交叉编译工具链的制作包含哪些基本概念。我们已经知道,在某个平台对程序进行编译后,得到的目标程序,默认也是在该平台运行的(例如 X86)。所以我们通常需要在现有平台(通常我们把这个平台称为Host)的基础上,制作出一个交叉编译工具链(包括gcc, binutils, glibc),得到新的gcc仍然是在该平台(通常我们把该平台称为Host)上运行的,但是当利用新的gcc去对某个源程序进行编译时,得到的目标程序 是在目标平台上运行的(通常我们把该平台称为Target)。因此,现在我们知道,制作交叉编译工具链少不了要先编译一个gcc和 binutils(包括链接器ld, strip等工具),但是仅仅是这两个还不够的。我们知道,在对源程序进行编译时,少不了要依赖一些库,例如C运行时库(glibc),而你的Host中 的库,它是针对Host体系结构的。例如你的X86中的库,其机器指令一定是X86的。这样,你的交叉编译工具链中,必须有目标平台的库。你肯定已经想到 了,先编译好gcc和binutils,然后用这个gcc编译目标平台的库,然后就可以在这个库的基础上,编译目标平台的程序了。现在你 已经可以想到制作一个交叉编译工具链的步骤了,但是很快你会看到,在gcc的编译过程中,我们需要编译2遍,这是为什么呢? 一个全面的gcc(支持各种语言的),需要目标平台的C库(glibc)的一些头文件,但是这个新的gcc编译出来之前,我们又没有安装目标平台的库 (glibc)。所以我们先编译一个基本的gcc(仅仅支持C语言),然后用这个gcc编译目标平台的glibc,注意此时得到的glibc是目标平台 的。最后,再在这个库的基础上,重新编译一个全面的gcc。除此之外,我们还要准备好内核头文件,这样我们就可以直接使用内核的一些宏, 数据结构定义,数据类型,等等。在有了这些概念的基础上,下面的操作就相对比较简单了。这里需要提醒的是,同样的编译参数,不同的编译环 境,或者不同的gcc, binutils,glibc版本,都可能编译不成功。根据我的经验,制作交叉编译工具链,一帆风顺就成功是很少见的。因此在编译过程中,如果遇到失败, 耐心+细心的分析config.log,Makefile,可以帮助你定位问题。尤其对于新手来说,千万不要急于求成,妄想直接复制一下命令行,一步步编 译就成功。我建议只是先看完一遍,对自己要做什么,和每一步的目的有个大概的了解,然后再开始。欲速则不达,这个道理很简单,恐怕只有多品位几次才能体 会。另外,千万不要以超级用户(root)的身份来制作交叉编译工具链,否则一不小心用target平台的库,把Host平台上的库给覆 盖了,后果可是很严重哦!准备工作 cd $HOMEmkdir ppccd ppcmkdir sourcescd sources wget /gnu/binutils/binutils-2.19.tar.bz2wget /gnu/glibc/glibc-2.9.tar.bz2wget /gnu/glibc/glibc-linuxthreads-2.5.tar.bz2wget /gnu/gcc/gcc-4.4.2/gcc-4.4.2.tar.bz2wget /pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2wget /gnu/gmp/gmp-4.3.1.tar.bz2wget /mpfr-current/mpfr-2.4.1.tar.bz2mkdir ./toolsexport TARGET=powerpc-linuxexport TOOLS=/ppc/toolsexport SOURCES=/ppc/sourcesexport LANGUAGE=C export LC_ALL=CInstall Kernel Headers cd $SOURCEStar jvxf linux-2.6.31.tar.bz2make ARCH=powerpc INSTALL_HDR_PATH=$TOOLS/$TARGET/usr headers_install把内核头文件安装到$TOOLS/$TARGET/usr/include中。ls -p $TOOLS/$TARGET/usr/includeasm/ asm-generic/ drm/ linux/ mtd/ rdma/ scsi/ sound/ video/ xen/Binutils cd $SOURCEStar jvxf binutils-2.19.tar.bz2mkdir binutils-buildcd binutils-build./binutils-2.19/configure -prefix=$TOOLS -target=$TARGETmakemake install安装完成后,$TOOLS目录如下:ls -p $TOOLSbin/ info/ lib/ man/ powerpc-linux/ share/此处需要注意的是:$TOOLS/bin/ 和 $TOOLS/$TARGET/bin(TARGET就是powerpc-linux)的内容ls -p $TOOLS/binpowerpc-linux-addr2line powerpc-linux-c+filt powerpc-linux-ld powerpc-linux-objdump powerpc-linux-sizepowerpc-linux-ar powerpc-linux-embedspu powerpc-linux-nm powerpc-linux-ranlib powerpc-linux-stringspowerpc-linux-as powerpc-linux-gprof powerpc-linux-objcopy powerpc-linux-readelf powerpc-linux-stripls -p $TOOLS/$TARGET/binar as ld nm objcopy objdump ranlib strip这些文件虽然在不同的目录,有不同的名字,但其实是一个文件:md5sum $TOOLS/bin/powerpc-linux-as3f77cbaaa417e2f59059114457d7d074 bin/powerpc-linux-asrootyunhual-desktop:/home/yunhual/dev/ppc/tool# md5sum powerpc-linux/bin/powerpc-linux-asmd5sum $TOOLS/$TARGET/bin/as3f77cbaaa417e2f59059114457d7d074 powerpc-linux/bin/as除此之外,binutils把用于生成目标平台的代码的链接脚本安装到$TOOLS/$TARGET/ldscripts目录下。GCC 第一遍 由于编译gcc依赖 gmp,mpfr这两个库,因此在编译gcc之前,首先安装这两个库.tar jvxf gmp-4.3.1.tar.bz2cd gmp-4.3.1./configure -enable-cxx -enable-mpbsd -prefix=/usrmake make checksudo make install如果没有指定-prefix=/usr,那么gmp默认安装到/usr/local目录下,而mpfr默认到/usr目录下搜索这个库。因此这里通过-prefix=/usr,把他们都安装到/usr下。见mpfr的FAQ: /faq.htmlcd $SOURCEStar jvxf mpfr-2.4.1.tar.bz2./configure -enable-thread-safe -prefix=/usrmake make checksudo make install现 在第一次编译GCC:cd $SOURCEStar jvxf gcc-4.4.2.tar.bz2mkdir gcc-bootstrap-buildcd gcc-bootstrap-build./gcc-4.4.2/configure -target=$TARGET -prefix=$TOOLS -disable-nls -disable-shared -disable-mutilib -disable-decimal-float -disable-threads -disable-libmudflap -disable-libssp -disable-libgomp -without-headers -enable-language=c -with-newlibmake all-gccmake install-gcc编译安装gcc库make all-target-libgcc make install-target-libgccmake install-gcc 把编译好的gcc分别安装到$TOOLS/bin/ 和 $TOOLS/$TARGET/binmd5sum $TOOLS/bin/powerpc-linux-gcc737e148f8fcf46d9c38636f01a1dd887 bin/powerpc-linux-gccmd5sum $TOOLS/$TARGET/bin/gcc737e148f8fcf46d9c38636f01a1dd887 powerpc-linux/bin/gccmake install-target-libgcc主要把gcc的库文件及头文件安装到$TOOLS/lib/$TARGET/$GCC_VERSION/目录中。这里$GCC_VERSION表示gcc版本号。Glibc 下面用这个新的gcc编译glibc,这个glibc是目标平台的。cd $SOURCEStar jvxf glibc-2.9.tar.bz2tar jvxf glibc-linuxthreads-2.5.tar.bz2 -directory=glibc-2.9编译之前,修改glibc-2.9的Makeconfig,否则会出错。vim glibc-2.9/Makeconfig把下面两行:gnulib := -lgcc $(libgcc_eh)static-gnulib := -lgcc -lgcc_eh $(libunwind)改成:gnulib := -lgcc static-gnulib := -lgcc mkdir glibc-buildcd glibc-buildCC=$TOOLS/bin/$TARGET-gcc ./glibc-2.9/configure -host=$TARGET -build=$(./glibc-2.9/scripts/config.guess) -with-headers=$TOOLS/$TARGET/usr/include/ -with-binutils=$TOOLS/$TARGET/powerpc-linux/bin -disable-profile -enable-add-ons libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes -disable-profile -includedir=/usr/include -prefix=/usr/ -enable-add-ons=linuxthreads -enable-add-ons=nptlmake make install_root=$TOOLS/$TARGET prefix= install首先,CC=.,binutils=. 指定了用我们新编译好的gcc和binutils,因此得到的glibc是目标平台的。最后,打开$TOOLS/$TARGET/lib/libc.so把 GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a ) 改为:GROUP ( libc.so.6 li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 战胜水利水电考试的策略分享试题及答案
- 2025年工程项目管理非线性思维试题及答案
- 2025年市政工程团队合作试题及答案
- 公共关系的情感传播试题及答案
- 公关活动的社交价值考量试题及答案
- 2025年工程经济重点突破试题及答案
- 工程项目管理区域管理试题及答案
- 2025年市政工程电气设施试题及答案
- 第14课《我要的是葫芦》课件
- 人保财险合同范例
- 高考英语单词3500(乱序版)
- 2023年新课标全国ⅰ卷英语真题(解析)
- 肺癌的护理查房 课件
- 公共管理学方法论知到智慧树章节测试课后答案2024年秋华南农业大学
- 消防工程施工中的质量控制
- 《装配式碳纤维增强免拆底模钢筋桁架楼承板(HF)应用技术标准》
- 人工智能在机能学实验教学应用图景的构设与挑战
- 【大学课件】单片机的基本结构
- 2025年上半年广东省中山市南头镇人民政府招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 医疗纠纷处理承诺书
- 农业公司管理制度(5篇)
评论
0/150
提交评论