收藏 分销(赏)

crosstool-ng 交叉编译工具链.doc

上传人:xrp****65 文档编号:6270534 上传时间:2024-12-04 格式:DOC 页数:6 大小:57KB 下载积分:10 金币
下载 相关 举报
crosstool-ng 交叉编译工具链.doc_第1页
第1页 / 共6页
crosstool-ng 交叉编译工具链.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
crosstool-ng 交叉编译工具链 for ok6410 2012-04-02 11:27:04 分类: C/C++ OK6410开发板学习笔记 交叉工具链的生成 华清远见培训的第二期有个实验就是生成交叉编译链,但是华清的实验手册上省略了一些操作,编译不易成功;若要自己编译成功请参考“交叉工具编译链的移植.doc”; 注:此实验手册中华清用的板子是2410(2440系列雷同). Ok6410的交叉编译链我是参考网上的。。。编译出来的 参考网页: 感谢大神的分享 软件平台: ubuntu 10.10 主机编译器: gcc 4.5.1 硬件平台: ok6410 1、准备环境 必备工具包:bison、flex、texinfo、automake、libtool、cvs、patch、libncurses5-dev、aria2、curl、g++、svn、gawk、cvsd、subversion 注:第一个链接上还有个gcj,这个是用于java的,不需要可以不用安装 (有些文章有写要安装gcj,在我的Ubuntu11.10安装不了,提示说它被其它的软件包引用了,可能是我之前装的其他工具已经包含gcj了把) // 我用10.10版装的也装不了 555 (我是用不着) 我们可以通过以下一条命令来获得它们,但需要ubuntu11.10接入网络 sudo apt-get install bison sudo apt-get install flex sudo apt-get install texinfo sudo apt-get install automake sudo apt-get install libtool sudo apt-get install cvs sudo apt-get install patch sudo apt-get install libncurses5-dev sudo apt-get install aria2 sudo apt-get install curl sudo apt-get install g++ sudo apt-get install subversion sudo apt-get install gawk sudo apt-get install cvsd 注:省事方法:sudo apt-get install bison flex texinfo automake libtool cvs patch libncurses5-dev aria2 curl g++ subversion gawk cvsd 2、下载crosstool-ng软件包 crosstool-ng的下载地址是 http://ymorin.is-a-geek.org/download/crosstool-ng/ 值得注意的是,下载里面最新的crosstool-ng以后,记得在到 http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/ 看看有没有相应的补丁,有得话一起下载下来,并打上补丁, 我下的是14.1版当时也是没有补丁, 有补丁的话要打补丁,不会打补丁请参考“交叉编译工具链的移植.doc”。 3、相应目录的建立 sudo mkdir -p /usr/local/arm sudo chmod 777 /usr/local/arm // 将arm目录权限设置为777 cd /usr/local/arm mkdir 4.5.1 sudo mkdir -p /home/ok6410/crosstool cd /home/ok6410/crosstool sudo mkdir crosstool-build crosstool-install src-4.5.1 (编译目录、 安装目录、 目标源码目录) 4、安装crosstool-ng 将下载好的crosstool-ng-1.14.1.tar.bz2复制到/home/ok6410/crosstool/下 解压crosstool-ng-1.14.1.tar.bz2, tar xvf crosstool-ng-1.14.1.tar.bz2 进入目录,进行配置: cd /home/ok6410/crosstool/crosstool-ng-1.14.1 配置安装目录为/home/ok6410/crosstool/crosstool-install sudo ./configure --prefix=/home/ok6410/crosstool/crosstool-install sudo make --编译 sudo make install --安装 5、配置编译的交叉编译工具链 sudo cd /home/ok6410/crosstool/crosstool-build --进入编译目录 sudo cp /home/ok6410/crosstool/crosstool-ng-1.14.1/samples/arm-unknown-linux-gnueabi/* ./ sudo cp crosstool.config .config --把crosstool-config --当作默认的配置文件 sudo /home/ok6410/crosstool/crosstool-install/bin/ct-ng menuconfig --图形界面进行配置 弹出以下菜单,此菜单主要用于交叉编译工具链的环境配置。 Paths and misc options ---> (/home/ok6410/crosstool/src-4.5.1) Local tarballs directory --目标源码目录 (/usr/local/arm/4.5.1) Prefix directory --最后生成的交叉编译工具链存放的目录 (2) Number of parallel jobs --主机是双核处理器的可以选2 另一说双核写4,我写的4 Target options ---> (armv6) Architecture level (arm1176jzf-s) Emit assembly for CPU (arm1176jzf-s) Tune for CPU (vfp) Use specific FPU Toolchain options ---> (none) Tuple's vendor string 这里可以设置个性化,不填就是unknow,可以设置自己的个性名如填“doc”, 这样产生的编译器前缀就是:arm-doc-linux-gnueabi- Operating System ---> Linux kernel version (2.6.36.4) ---> //再高一点的版本如2.6.38制作好的编译器在编译qtopia2.2.0的时候会报include\linux下没有videodev.h这个头文件,低一些的版本如3.6.28在交叉编译的时候会报scripts/unifdef.c中的getline和系统/usr/include/stdio.h中的getline冲突 下面这些与目标源码有关: Binary utilities ---> binutils version (2.19.1a) ---> C compiler ---> gcc version (4.4.6) ---> //等下再修改成4.5.1 [ ] Fortran [ ] Java C-library ---> glibc version (2.9) ---> Debug facilities ---> [ ] gdb ---> //gdb原作者没选,起初我选上的,但是编译不成功,原因也没有找到,希望有人能搞定。 Companion libraries ---> GMP version (4.3.2) ---> MPFR version (2.4.2) ---> PPL version (0.10.2) ---> CLooG/ppl version (0.15.10) ---> libelf version (0.8.13) ---> 保存退出。 vi .config 将 CT_CC_VERSION="4.4.6" 改成 CT_CC_VERSION="4.5.1" 将 CT_CC_V_4_4_6=y 改成 CT_CC_V_4_5_1=y 在 CT_MPFR=y 后面增加一行 CT_MPC=y 在 CT_MPFR_VERSION="2.4.2" 后面增加两行 CT_MPC_V_0_8_2=y CT_MPC_VERSION="0.8.2" 保存退出。 注:若编译失败再次用菜单图形化设置后,注意查看.config之前修改的内容是否还原了,最好在查看一次。(我的就是还原了); 6、编译交叉工具链 编译的时候会自动下载下面的软件包,也可以自己先下载好放在src-4.5.1目录下,这样编译的是时候就比较快了。 binutils-2.19.1a.tar.bz2 duma_2_5_15.tar.gz glibc-2.9.tar.bz2 libelf-0.8.13.tar.gz mpfr-2.4.2.tar.xz strace-4.5.19.tar.bz2 cloog-ppl-0.15.10.tar.gz expat-2.0.1.tar.gz //我在编译的时候,这个没能自动下载成功,解决方法:自己网上搜索下载后放到/home/ok6410/crosstool/src-4.5.1下即可。 glibc-ports-2.9.tar.bz2 ltrace_0.5.3.orig.tar.gz ncurses-5.9.tar.gz dmalloc-5.5.2.tgz gcc-4.5.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc-0.8.2.tar.gz ppl-0.10.2.tar.bz2 linux-2.6.36.4.tar.xz 在终端执行 sudo /home/ok6410/crosstool/crosstool-install/bin/ct-ng build --开始编译 编译了两个小时左右,不过很庆幸的是没出现错误(其实我试了很多次了)。接下看下成果。 sudo cd usr/local/arm/4.5.1/bin/ sudo ./arm-none-linux-gnueabi-gcc -v 打印如下信息: Using built-in specs. COLLECT_GCC=./arm-none-linux-gnueabi-gcc COLLECT_LTO_WRAPPER=/usr/local/arm/4.5.1/libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper Target: arm-none-linux-gnueabi Configured with: /home/ok6410/crosstool/crosstool-build/.build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu -- host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/usr/local/arm/4.5.1 --with- sysroot=/usr/local/arm/4.5.1/arm-none-linux-gnueabi/sysroot --enable-languages=c,c++ --disable-multilib --with-arch=armv6 --with- cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=soft --with-pkgversion='crosstool-NG 1.13.2' --disable-sjlj -exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with- gmp=/home/ok6410/crosstool/crosstool-build/.build/arm-none-linux-gnueabi/build/static --with- mpfr=/home/ok6410/crosstool/crosstool-build/.build/arm-none-linux-gnueabi/build/static --with- ppl=/home/ok6410/crosstool/crosstool-build/.build/arm-none-linux-gnueabi/build/static --with- cloog=/home/ok6410/crosstool/crosstool-build/.build/arm-none-linux-gnueabi/build/static --with-host-libstdcxx='-static-libgcc - Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --with-local-prefix=/usr/local/arm/4.5.1/arm- none-linux-gnueabi/sysroot --disable-nls --enable-c99 --enable-long-long Thread model: posix gcc version 4.5.1 (crosstool-NG 1.13.2) 接下来将命令都链接成arm-linux-,这样以后操作比较方便。 sudo ln -s arm-none-linux-gnueabi-addr2line arm-linux-addr2line sudo ln -s arm-none-linux-gnueabi-ar arm-linux-ar sudo ln -s arm-none-linux-gnueabi-as arm-linux-as sudo ln -s arm-none-linux-gnueabi-c++ arm-linux-c++ sudo ln -s arm-none-linux-gnueabi-c++filt arm-linux-c++filt sudo ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp sudo ln -s arm-none-linux-gnueabi-g++ arm-linux-g++ sudo ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc sudo ln -s arm-none-linux-gnueabi-gcc-4.5.1 arm-linux-gcc-4.5.1 sudo ln -s arm-none-linux-gnueabi-gccbug arm-linux-gccbug sudo ln -s arm-none-linux-gnueabi-gcov arm-linux-gcov sudo ln -s arm-none-linux-gnueabi-gprof arm-linux-gprof sudo ln -s arm-none-linux-gnueabi-ld arm-linux-ld sudo ln -s arm-none-linux-gnueabi-ldd arm-linux-ldd sudo ln -s arm-none-linux-gnueabi-nm arm-linux-nm sudo ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy sudo ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump sudo ln -s arm-none-linux-gnueabi-populate arm-linux-populate sudo ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib sudo ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf sudo ln -s arm-none-linux-gnueabi-size arm-linux-size sudo ln -s arm-none-linux-gnueabi-strings arm-linux-strings sudo ln -s arm-none-linux-gnueabi-strip arm-linux-strip 到此arm-linux-gcc4.5.1-armv6-vfp交叉编译器制作完成,以后就可以用arm-linux-gcc来编译其他程序了。 补充点废话,最后生成的交叉工具链的名字是arm-unknown-linux-XXXXX这样的一大长串,如果不喜欢那个unknown,修改它的方法是用vi修改.config文件,里面有VENDOR参数,如果为空,生成也是unknown;喜欢的话可以写上自己的名字。 我觉得一定要细读x-tools/arm-unknown-linux-gnueabi/build.log所指出的错误原因和解决办法。另外,crosstool-ng不要安装在/usr/或/usr/local下面,否则可能出现chmod错误;另外,编译机器本身的gcc和g++的版本要一致,g++是需要的。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服