构建powerpc交叉编译环境完稿.doc_第1页
构建powerpc交叉编译环境完稿.doc_第2页
构建powerpc交叉编译环境完稿.doc_第3页
构建powerpc交叉编译环境完稿.doc_第4页
构建powerpc交叉编译环境完稿.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

构建powerpc交叉编译环境(完稿)详细见:/u3/103566/showart_2035565.html嵌入式开发系统一般分为3种:1、连接式:(略)2、可抽换式:(略)3、独立式:(略)我们通常见到的是连接式。由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由以下三个组件组成:1、binutils2、gcc3、glibc:有时出于减小 libc 库大小的考虑,你也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。工具链主要包括binutils, gcc, glibc三个组件,由于各个组件的开发和发布彼此独立,所以并非用各组件的任意版本都能顺利完成建立工作。建立一个交叉编译工具链是一个相当复杂的过程,如果你不想自己经历复杂的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载。crosstool工具推荐如下组合:其中14经过我实际验证。1、 gcc-3.4.5 cgcc-3.4.5glibc-2.2.5binutils-2.15linux-2.6.82、gcc-3.4.5cgcc-3.3.6glibc-2.3.2binutils-2.15linux-2.6.8hdrs-3、gcc-3.4.5cgcc-3.4.5glibc-2.3.5binutils-2.15linux-2.6.8hdrs-4、gcc-3.4.5cgcc-3.4.5glibc-2.3.6binutils-2.15linux-2.6.8hdrs-5、gcc-4.0.2cgcc-3.3.6glibc-2.3.2binutils-2.16.1linux-hdrs-6、gcc-4.0.2cgcc-4.0.2glibc-2.3.5binutils-2.16.1linux-hdrs-7、gcc-4.0.2cgcc-4.0.2glibc-2.3.6binutils-2.16.1linux-hdrs-8、gcc-4.1.0cgcc-3.3.6glibc-2.3.2binutils-2.16.1linux-hdrs-9、gcc-4.1.0cgcc-3.3.6glibc-2.3.5binutils-2.16.1linux-hdrs-10、gcc-4.1.0cgcc-3.3.6glibc-2.3.6binutils-2.16.1linux-hdrs-11、gcc-4.1.1cgcc-3.3.6glibc-2.3.5binutils-2.16.1linux-hdrs-12、gcc-4.1.1cgcc-3.3.6glibc-2.3.5binutils-2.16.1linux-hdrs-tls13、gcc-4.1.1cgcc-3.3.6glibc-2.3.6binutils-2.16.1linux-hdrs-14、gcc-4.1.1cgcc-3.3.6glibc-2.3.6binutils-2.16.1linux-hdrs-tls 工具链主要包括binutils, gcc, glibc三个组件,由于各个组件的开发和发布彼此独立,所以并非用各组件的任意版本都能顺利完成建立工作。下载内核:/pub/linux/kernel/下载binutils:/gnu/binutils/下载gcc:/gnu/gcc/下载c连接库(glibc)和补丁:/gnu/glibc/开发机: Intel(R) Celeron(R) CPU 2.26GHz fedora core 7目标板: powerpc4xx 一、准备工作cd /home/lsf这里用的用户名是lsfmkdir embedded再在这个项目目录 embedded 下建立三个目录 build-tools、kernel 和 tools。cd embedded mkdir build-tools kernel toolsbuild-tools-用来存放你下载的 binutils、gcc 和 glibc 的源代码和用来编译这些源代码的目录。kernel-用来存放你的内核源代码和内核补丁。tools-用来存放编译好的交叉编译工具和库文件。为了把源码和编译时生成的文件分开,一般的编译工作不在的源码目录中,要另建一个目录来专门用于编译。用以下的命令来建立编译你下载的binutils、gcc和glibc的源代码的目录。cd $PRJROOT/build-tools mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patchbuild-binutils -编译binutils的目录build-boot-gcc -编译gcc 启动部分的目录build-glibc -编译glibc的目录build-gcc -编译gcc 全部的目录gcc-patch -放gcc的补丁的目录将 binutils-2.10.1、gcc-2.95.3、glibc-2.2.3 和 glibc-linuxthreads-2.2.3 的源代码放入 build-tools 目录中export PRJROOT=/home/liushaofeng/embedded export TARGET=powerpc-linux export PREFIX=$PRJROOT/tools export TARGET_PREFIX=$PREFIX/$TARGET export PATH=$PREFIX/bin:$PATH二、内核头文件设置cd $PRJROOT/kernel tar zxvf linux-2.4.20.tar.gz cd linux-2.4.20 make ARCH=ppc CROSS_COMPILE=powerpc-linux- menuconfig接下来为你的交叉编译环境建立你的内核头文件的链接mkdir -p $TARGET_PREFIX/include ln -s $PRJROOT/kernel/linux-2.4.20/include/linux $TARGET_PREFIX/include/linux ln -s $PRJROOT/kernel/linux-2.4.20/include/asm-ppc $TARGET_PREFIX/include/asm ln -s $PRJROOT/kernel/linux-2.4.20/include/asm-generic $TARGET_PREFIX/include/asm-generic也可以把 Linux 内核头文件拷贝过来用mkdir -p $TARGET_PREFIX/include cp -r include/linux $TARGET_PREFIX/include cp -r include/asm-ppc $TARGET_PREFIX/include cp -r include/asm-generic $TARGET_PREFIX/include三、建立二进制工具(binutils)binutils是一些二进制工具的集合,其中包含了我们常用到的as和ld。首先,我们解压我们下载的binutils源文件。cd $PRJROOT/build-tools tar -xvzf binutils-2.10.tar.gz然后进入build-binutils目录配置和编译binutils。cd build-binutils ./binutils-2.10/configure -target=$TARGET -prefix=$PREFIX-target 选项是指出我们生成的是 ppc-linux 的工具,-prefix 是指出我们可执行文件安装的位置。会出现很多 check,最后产生 Makefile 文件。有了 Makefile 后,我们来编译并安装 binutils,命令很简单。make make install四、建立二进制工具(binutils)进入 build-tools 目录,将下载 gcc 源代码解压cd $PRJROOT/build-tools tar -xvzf gcc-2.95.3.tar.gz在我们编译并安装 gcc ./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -without-headers -enable-language=c -with-newlib (ppc) make all-gcc make install-gcc五、建立c连接库cd $PRJROOT/build-tools tar xvzf glibc-2.2.3.tar.gz tar xvzf glibc-linuxthreads-2.2.3.tar.gz -directory=glibc-2.2.3 cd build-glibc CC=powerpc-linux-gcc ./glibc-2.2.3/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include make make install_root=$TARGET_PREFIX prefix= install安装过程可能出现有两个文档目录不能成功安装,可以用-i选项略过错误继续安装make -i install_root=$TARGET_PREFIX prefix= install六、编译完整的gcc第二次完整编译gcc时,需要修改生成的lib库中的libc.so文件(/home/liushaofeng/embedded/tools/ppc-linux/lib/libc.so),将 GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a)改为GROUP ( libc.so.6 libc_nonshared.a)vim $TARGET_PREFIX/lib/libc.so在建立boot-gcc 的时候,我们只支持了C。到这里,我们就要建立全套编译器,来支持C和C+。-enable-languages=c,c+ 告诉 full gcc 支持 c 和 c+ 语言。然后编译和安装你的 full gcccd $PRJROOT/build-tools/build-gcc ./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -enable-languages=c,c+ make all make install到此交叉编译工具链建立完成。验证:powerpc-linux-gcc simple.c -o simplefile simple说明:add2line -将你要找的地址转成文件和行号,它要使用 debug 信息。ar -产生、修改和解开一个存档文件as -gnu 的汇编器c+filt -c+和java中有一种重载函数,所用的重载函数最后会被编译转化成汇编的标号,c+filt 就是实现这种反向的转化,根据标号得到函数名。c+ -gnu的 c+ 编译器。cpp -gnu的 c 的预编译器gasp -gnu 汇编器预编译器。gcc -gnu 的 c 语言编译器gcov -gcc 的辅助测试工具,可以用它来分析和优程序。g+ -gnu的 c+ 编译器。ld -gnu 的连接器nm -列出目标文件的符号和对应的地址objcopy -将某种格式的目标文件转化成另外格式的目标文件objdump -显示目标文件的信息ranlib -为一个存档文件产生一个索引,并将这个索引存入存档文件中readelf -显示 elf 格式的目标文件的信息size -显示目标文件各个节的大小和目标文件的大小strings -打印出目标文件中可以打印的字符串,有个默认的长度为4strip -剥掉目标文件的所有的符号信息unprotoize -将 ansi c 的源码转化为 k&r c 的形式,去掉函数原型中的参数类型。protoize -与unprotoize相反,将k&r c的源码转化为ansi c的形式,函数原型中加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论