有人问起建立交叉编译环境,以前用过ELDK或者crosstool来生成PowerPC405的交叉编译工具链。以前也写过类似的Blog(见参考4),做起来不是很麻烦,但是crosstool做生成的gcc以及相关的库版本太低,无法支持最新的内核。最近发现一个很好用的工具,crosstool-ng(见参考1),用于生成交叉编译工具链,那是相当不错的选择,支持的架构有:PowerPC,ARM,MIPS,X86-64等,最关键的是它生成的工具链支持最新的内核,同时还在更新中。

这里记录一下我个人生成交叉编译工具链的过程,中间有点曲折,发现错误,但是不知道怎么解决。

主要步骤

crosstool-ng-1.3.3 下载地址是:

http://ymorin.is-a-geek.org/projects/crosstool

主要步骤如下:

   1: #tar–xvf crosstool-ng-1.3.3.tar.bz2
   2: #cd crosstool-ng-1.3.3
   3: #./configure --local
   4: #make
   5: #make install
   6: #./ct-ng–menuconfig

这个时候就有点像配置内核一样,操作完全一样,这就是它方便的地方。 这个主要见下文主要的配置。

   1: #unset LD_LIBRARY_PATH LIBRARY_PATH CPATH
   2: #export LD_LIBRARY_PATH LIBRARY_PATH CPATH
   3: #./ct-ng build

一切顺利的话,会在Prefix directoy(在配置中会涉及到这个选项)的目录下生成powerpc-405-linux-gnu,在bin目录下面可以看到如下图的工具链命令。

主要的配置(基于Glibc)

这个配置本人已经通过编译,如果编译时出错请尝试更换glibc,gcc,binutils的版本。

  • Paths and misc options

    • Paths

      • Local tarballs directory: ${HOME}/tarballs
      • Save new tarballs: Yes
      • Prefix directory: /home/yao/crosstool-ng-1.3.3/${CT_TARGET}
    • Build behavior
      • Number of parallel jobs: 3 or 4 (if you have a quad-core computer)
      • Nice level: 10
    • Logging
      • Maximum log level to see: EXTRA
  • Target options
    • Target Architecture: powerpc
    • Emit assembly for CPU: 405
    • Tune assembly for CPU: 405
    • Floating point: software
  • Toolchain options
    • Vendor string: 405
    • Use sysroot’ed toolchain
    • Build shared libraries
  • Operating System
    • Target OS: linux
    • Linux kernel version: 2.6.27.6
  • GMP and MPFR
    • Build libraries for target: Yes
    • GMP version: 4.2.4
    • MPFR version: 2.3.2
  • binutils
    • binutils version: 2.19
    • binutils libraries for the target: Yes (libiberty and libbfd)
  • C compiler
    • gcc version: 4.3.2
    • C++: Yes
    • Fortran: Yes (optional)
    • Java: Yes (optional)
    • (Untested: enable any other languages you may want)
  • C-library
    • C library: glibc
    • glibc version: 2.7
    • Threading implementation to use: nptl
    • Use the ports addon: Yes
  • Tools (Optional, Untested!)
    • libelf: Yes
    • sstrip: No (because I couldn't get it to build)
  • Debug facilities (Optional, Untested!)
    • dmalloc: Yes (5.5.2)
    • duma: Yes (2_5_14)
    • gdb: Yes
      • Build a static cross gdb: Yes
      • Native gdb: Yes
      • Build a static native gdb: Yes
      • Use GMP and MPFR: yes
      • Version: 6.8
    • ltrace: Yes (0.4)
    • strace: No (because I couldn't get it to build

需要下载的包

根据上面的配置文件,需要如下的包,如果不手动下载到Local tarballs directory,ct-ng会自动下载,但是会很慢,建议还是手动下载如下的包至Local tarballs directory。

binutils-2.19.tar.bz2 
duma-2_5_14.tar.gz  
glibc-2.7.tar.bz2        
libelf-0.8.10.tar.gz  
ltrace-0.4.tar.gz
dmalloc-5.5.2.tgz      
gcc-4.3.2.tar.bz2   
glibc-ports-2.7.tar.bz2  
linux-2.6.27.6.tar.bz2  
mpfr-2.3.2.tar.bz2     
gdb-6.8.tar.bz2     
gmp-4.2.4.tar.bz2        
ltrace_0.4.orig.tar.gz  
ncurses-5.6.tar.gz

出现的错误记录

[ALL  ]    tar: Error exit delayed from previous errors
[ERROR]    Build failed in step 'Extracting and patching toolchain components'
[ERROR]    Error happened in '/home/yao/crosstool-ng-1.3.2/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
[ERROR]          called from '/home/yao/crosstool-ng-1.3.2/scripts/functions' at line # 564 in function 'CT_ExtractAndPatch'
[ERROR]          called from '/home/yao/crosstool-ng-1.3.2/scripts/build/binutils.sh' at line # 18 in function 'do_binutils_extract'
[ERROR]          called from '/home/yao/crosstool-ng-1.3.2/scripts/crosstool.sh' at line # 433 in function 'main'
[ERROR]    Look at '/home/yao/powerpc-405-linux-gnu/build.log' for more info on this error.

crosstool-ng的配置文件(.config)用的是参考2所提供的,只是修改了工作目录和预安装目录的路径。有人说是版本之间的冲突才导致编译错误(参考3),所以我尝试了更换了Glibc的版本,编译通过,生成相应的工具链。

Ref.

  1. Crosstool-ng官网
  2. Crosstool-ng 1.3.2
  3. Crosstool-NG是个好东西
  4. Linux2.4.26内核在Virtex II Pro开发板上的移植---建立交叉编译环境(三)

利用Crosstool-ng 1.3.3 生成powerpc交叉编译工具链相关推荐

  1. 搭建powerpc交叉编译工具链

    参考文档:http://blog.sina.com.cn/s/blog_70dd16910100y7vj.html 安装环境:fedora-31 1.下载安装包 1.1 GCC软件包:http://f ...

  2. OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。

    一.API函数 void mixChannels(const Mat* src,int nsrc,Mat* dst ,int ndst,const int* fromTo,size_t npairs) ...

  3. NLP实战:利用Python理解、分析和生成文本 | 赠书

    导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...

  4. svn增量打包部署_利用svn的补丁文件打包生成增量文件

    下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...

  5. py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络

    py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络 目录 输出结果 实现代码 输出结果 实现代码 #textgenrnn:利用textgenrnn实现训练文本生成网 ...

  6. 利用jquery的qrcode.js插件生成二维码的两种方式的使用

    2019独角兽企业重金招聘Python工程师标准>>> 利用jquery的qrcode.js插件生成二维码的额两种方式,canvas(即画布)方式和table方式(原文地址http: ...

  7. 数据库创建(利用写好的数据库表生成创建表的sql语句+利用生成的数据库创建表加同步数据sql)

    一.利用写好的数据库表生成创建表的sql语句 1.简单创建一个数据库,并建一个表,并编辑数据. a.建库 b.建表 c.编辑表,保存时输入表名 d.刷新一下,出来了 e.转存导出sql文件. 二.利用 ...

  8. 利用UrlRewrite,asp.net动态生成htm页面(补充说明)

    前段时间写的利用UrlRewrite,asp.net动态生成htm页面,感觉说的不是很明白,今天我把主要的流程给画了出来,应该更容易理解些. 源代码已整理 下载 转载于:https://www.cnb ...

  9. 利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

最新文章

  1. Waymo自动驾驶报告:平均21万公里一次事故,严重事故都是人类司机的锅
  2. java何时支持await,内存-为什么Java等待这么长时间才能运行垃圾回收器?
  3. django 模板语言之 simple_tag 自定义模板
  4. Java Scala 混合编程导致 编译失败 ,【找不到符号】问题解决
  5. 初一模拟赛总结(2019.6.15)
  6. 当winform窗体的Bordestyle设置为None时,鼠标可以拖动窗体的办法
  7. 简述RHEL7新特性(二)
  8. 加速新冠疫苗研发,阿里云免费开放一切AI算力!
  9. MD9 入门 制作衣服 笔记
  10. mcgs 安装没有权限_我的电脑为什么不能安装mcgs组态软件
  11. 【2021-12-17】css反爬+pytesseract文字识别
  12. 变桨距风力发电机液压系统设计
  13. php对照表,编码对照表的使用(1)-PHP教程,PHP应用
  14. 神之bug 嵌套RecyclerView谜之滚动
  15. android扫描文件,安卓手机怎么扫描文件_手机扫描文件的图文教程-系统城
  16. 美团数据分析岗面试题分享
  17. matlab 符号微积分
  18. 如何抓取 bet365 即时足球比分数据
  19. JAVA 环境安装包 JDK 64位 jdk-8u221-windows-x64.exe
  20. MySQL数据库技术

热门文章

  1. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none 解决方法
  2. rfa 文件读取_「rfa」rfa文件用什么软件打开? - seo实验室
  3. 【EMQX 5.0】1.3 MQTT协议数据包结构
  4. leetcode 5370. 设计地铁系统(C++)
  5. Adobe官网下载,一套正版Adobe软件多少钱?
  6. python xpath入门_xpath 的使用
  7. 关于关税和汇率传导的文献综述概论-根据余智著作概括
  8. php excel 下拉菜单,excel下拉框怎么做
  9. ZYNQ petalinux系统启动文件固化到FLASH
  10. 【ybt】【数据结构 二分堆 课过 例3】龙珠游戏