DW怎么做电商网站,体育新闻最新消息世界杯,重庆建站模板代理,网站建设 吉林Crosstool-ng制作交叉编译工具链 交叉编译器可以用现成的#xff0c;比如CodeSourcery制作的交叉编译器#xff0c;也可以自己制作#xff0c;一般是用kernelgccglibcbinutils的源码包来编译安装#xff0c;后来由于这个太麻烦于是就有类似crosstool这样的自动化配置工具。… Crosstool-ng制作交叉编译工具链 交叉编译器可以用现成的比如CodeSourcery制作的交叉编译器也可以自己制作一般是用kernelgccglibcbinutils的源码包来编译安装后来由于这个太麻烦于是就有类似crosstool这样的自动化配置工具。 现在之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具它是crosstool的替换者。crosstool的gcc版本只能到4.1.1无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本可用来编译最新内核。 编译的系统环境是ubuntu 10.10 crosstool-ng 1.11.1目标平台ARMv4t, arm9tdmis3c2440 目录 [隐藏] 1 配置ubuntu编译环境2 安装crosstool-ng3 配置自己的交叉编译器4 自动下载和编译5 安装交叉编译器和测试 5.1 安装交叉编译器5.2 标准化安装交叉编译器6 更多的配置和提醒7 外部链接 [编辑]配置ubuntu编译环境 安装编译所需的包 sudo apt-get install sed bash cut dpkg-dev bison flex patch texinfo automake m4 libtool stat cvs websvn tar gzip bzip2 lzma readlink libncurses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk -y安装结束以后就可以用了。 如果后面出现编译错误再增加相应的包即可 [编辑]安装crosstool-ng 1. 首先从官方网站上下载crosstool-ng的源码包 http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.11.1.tar.bz2** 记得在到http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/ 看看有没有相应的补丁有得话一起下载下来。(#patch -p1 补丁文件 //如果有补丁打补丁)2. 将此源码包解压缩并编译安装 tar jxvf crosstool-ng-1.11.1.tar.bz2cd crosstool-ng--1.11.1./configuremakesudo make install3. 如果一切正常则ct-ng命令就可以用了注编译的时候如果出现错误可以利用apt-get的方式安装相应的包即可 [编辑]配置自己的交叉编译器 crosstool-ng可以配置各种平台的交叉编译器也可以构建符合自己实用条件的个性编译器。下面以ARM平台为例制作具有一定通用性的交叉编译器。这里我们从一个现成的编译器配置开始用例子里的arm-unknown-linux-gnueabi作为配置的基础然后来做一个交叉编译器。 将crosstool-ng源码包中samples/arm-unknown-linux-gnueabi/下的crosstool.config拷贝到源码包主目录下在源码包主目录下执行cp samples/arm-unknown-linux-gnueabi/crosstool.config .config然后执行ct-ng menuconfig进入配置菜单与linux内核很类似在这里我对以下各选项稍作修改Paths and misc options --- ......(${HOME}/src) Local tarballs directory # 指定制作编译器所需要的源码包的下载存放可以修改成任意位置请注意权限。现在指定到~/src下。......(/opt/${CT_TARGET}) Prefix directory # 制作好的编译器所放置的目录
Target options ---Target Architecture (arm) --- # 注意看这项是不是ARM平台......Floating point: (software) --- # 对于很多ARM架构CPU来说是不支持硬浮点运算的所以选择软件方式有更好的兼容性......[*] Use EABI # 是否实用EABI方式对某些指令采用异常的方式来处理如除法指令建议选中
Toolchain options ---..... (tonghuix) Tuples vendor string # 这里可以修改成你自己的个性化名称最后会生成形如arm-yourname-linux-gnueabi这样的编译器前缀修改好以后就可以开始编译了。 [编辑]自动下载和编译 下面就可以开始编译了默认情况下源码包会从网络下载会占用比较大的带宽下载后总大小在200MB左右下载好会放到 ~/src下。 开始编译 ct-ng build经过大概3个小时的下载2M ADSL小水管和90分钟的编译过程在/opt/下生成了arm-tonghuix-linux-gnueabi目录 注也可以提前下载好放到~/src下但请注意下载的文件名必须一致否则会重新下载下面是利用arm-unkown-linux-gnueabi模板生成交叉编译器所需要的源码文件列表binutils-2.19.1.tar.bz2
dmalloc-5.5.2.tgz
duma_2_5_15.tar.gz
ecj-latest.jar
expat-2.0.1.tar.gz
gcc-4.3.2.tar.bz2
gdb-6.8.tar.bz2
glibc-2.9.tar.bz2
glibc-ports-2.9.tar.bz2
gmp-4.3.2.tar.bz2
libelf-0.8.13.tar.gz
linux-2.6.33.12.tar.bz2
ltrace_0.5.3.orig.tar.gz
mpfr-2.4.2.tar.bz2
ncurses-5.7.tar.gz
strace-4.5.19.tar.bz2[编辑]安装交叉编译器和测试 [编辑]安装交叉编译器 刚制作好的交叉编译器其实就可以用了但是还有些许不方便之处我们可以进入到生成好的交叉编译器的目录 cd /opt/arm-tonghuix-linux-gnueabi/bin下面执行 ./arm-tonghuix-linux-gnueabi-gcc -v应该可以看到如下这样的输出信息 Target: arm-tonghuix-linux-gnueabi
Configured with: /home/tonghuix/crosstool-ng-1.11.1/.build/src/gcc-4.3.2/configure --buildi686-build_pc-linux-gnu --hosti686-build_pcinux-gnu --targetarm-tonghuix-linux-gnueabi --prefix/opt/arm-tonghuix-linux-gnueabi --with-sysroot/opt/arm-tonghuix-linux-gnueabi-arm-tonghuix-linux-gnueabi/sysroot --enable-languagesc,c,fortran,java --disable-multilib --with-floatsoft --with-pkgversioncrosstool- NG-1.11.1 --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-gmp/home/tonghuix/crosstool-ng-1.11.1/.build/arm-tonghuix-linux-gnueabi/build/static --with-mpfr/home/tonghuix/crosstool-ng-1.11.1/.build/arm-tonghuix-linux-gnueabi/build/static --enable-threadsposix --enable-target-optspace --with-local-prefix/opt/arm-tonghuix-linux-gnueabi-arm-tonghuix-linux-gnueabi/sysroot --disable-nls --enable-symversgnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.3.2 (crosstool-NG-1.11.1) 这样就表明我们的交叉编译器制作成功了。 下面把交叉编译器所在的目录添加到系统PATH变量中修改~/.bashrc文件在其中添加: export PATH$PATH:/opt/arm-tonghuix-linux-gnueabi/bin为了使得这个PATH生效我们可以执行一下~/.bashrc文件 source ~/.bashrc这样我们就可以在命令行下直接使用arm-tonghuix-linux-gnueabi-gcc这样的命令了 [编辑]标准化安装交叉编译器 我们在使用交叉编译器的时候一般是采用arm-tonghuix-linux-gnueabi这样的命令的但是很多标准Makefile需要实用标准的交叉编译器的名称一般这个名称是arm-linux-gcc这样的。 cd /opt/arm-tonghuix-linux-gnueabi/bin/那么我们在生成交叉编译器的目录下写一个link.sh脚本新建一些软链接。 link.sh #!/bin/sh
PREFIXarm-tonghuix-linux-gnueabi-
AFTFIXarm-linux-
ln -s ${PREFIX}gcc ${AFTFIX}gcc
ln -s ${PREFIX}addr2line ${AFTFIX}addr2line
ln -s ${PREFIX}gdbtui ${AFTFIX}gdbtui
ln -s ${PREFIX}ar ${AFTFIX}ar
ln -s ${PREFIX}as ${AFTFIX}as
ln -s ${PREFIX}c ${AFTFIX}c
ln -s ${PREFIX}cfilt ${AFTFIX}cfilt
ln -s ${PREFIX}cpp ${AFTFIX}cpp
ln -s ${PREFIX}g ${AFTFIX}g
ln -s ${PREFIX}gccbug ${AFTFIX}gccbug
ln -s ${PREFIX}gcj ${AFTFIX}gcj
ln -s ${PREFIX}gcov ${AFTFIX}gcov
ln -s ${PREFIX}gdb ${AFTFIX}gdb
ln -s ${PREFIX}gfortran ${AFTFIX}gfortran
ln -s ${PREFIX}gprof ${AFTFIX}gprof
ln -s ${PREFIX}jcf-dump ${AFTFIX}jcf-dump
ln -s ${PREFIX}ld ${AFTFIX}ld
ln -s ${PREFIX}ldd ${AFTFIX}ldd
ln -s ${PREFIX}nm ${AFTFIX}nm
ln -s ${PREFIX}objcopy ${AFTFIX}objcopy
ln -s ${PREFIX}objdump ${AFTFIX}objdump
ln -s ${PREFIX}populate ${AFTFIX}populate
ln -s ${PREFIX}ranlib ${AFTFIX}ranlib
ln -s ${PREFIX}readelf ${AFTFIX}readelf
ln -s ${PREFIX}run ${AFTFIX}run
ln -s ${PREFIX}size ${AFTFIX}size
ln -s ${PREFIX}strings ${AFTFIX}strings
ln -s ${PREFIX}strip ${AFTFIX}strip写完这个link.sh文件以后我们可以执行一下 sh link.sh这样我们就得到了整个使用标准名称的交叉编译工具链可以在makefile中使用类似arm-linux-gcc这样的名称了。 [编辑]更多的配置和提醒 用ct-ng menuconfig进入配置菜单可以将某些选项修改成自己的配置不过注意以下几个地方 注意其中各个Path的配置必须准确如果找不到就很麻烦可以指定不同的下载镜像但是要确定这个镜像可用并且安全可靠可以不设置操作系统也就是可以将Target OS改成bare-metal这样的交叉编译器适合于面对硬件的裸机程序如果不改也可以用于裸机编程。Kernel的版本、库的版本、gcc的版本都不建议修改除非能够确定一套比较完善的编译源码包的版本组合配置结束后建议存一个自己的配置文件以防万一和错误。转载于:https://www.cnblogs.com/Charles-Zhang-Blog/p/3319377.html