利用Crosstool-ng 1.3.3 生成powerpc交叉编译工具链
来源:互联网 发布:mac os怎样卸载软件 编辑:程序博客网 时间:2024/06/16 12:47
有人问起建立交叉编译环境,以前用过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.
- Crosstool-ng官网
- Crosstool-ng 1.3.2
- Crosstool-NG是个好东西
Linux2.4.26内核在Virtex II Pro开发板上的移植---建立交叉编译环境(三)
- 利用Crosstool-ng 1.3.3 生成powerpc交叉编译工具链
- crosstool-ng制作交叉编译工具链(powerpc-linux)
- 利用crosstool-ng-1.14.0制作交叉编译工具链
- crosstool-ng 编译生成交叉编译链
- Crosstool-ng制作交叉编译工具链
- Crosstool-ng制作交叉编译工具链
- Crosstool-ng制作交叉编译工具链
- Crosstool-ng制作交叉编译工具链
- Crosstool-ng制作交叉编译工具链
- ubuntu 利用crosstool-ng-1.8.1制作交叉编译工具链
- Ubuntu10.10下利用crosstool-ng构建交叉编译链
- 用crosstool-ng编译交叉工具链 for S3C6410
- 用crosstool-ng建立arm交叉编译工具链
- 用crosstool-ng建立arm交叉编译工具链
- Cygwin下用crosstool-ng 编译交叉工具链
- crosstool-ng制作交叉编译工具链(armv6)
- 使用crosstool-ng制作交叉编译工具链
- Cygwin下用crosstool-ng 编译交叉工具链
- 实现对文件进行加密,解密程序代码
- javascript之DOM详解
- servlet笔记02:tomcat目录结构
- Dll给主程序传递数据的试验
- ubuntu 12.04 LTS 发布
- 利用Crosstool-ng 1.3.3 生成powerpc交叉编译工具链
- mb-gdb调试Linux kernel 入门指导
- 5分钟搞定250篇参考文献
- STL 整理map、set、vector、list、stack、queue、deque、priority_queue
- 版本号
- linux串口驱动——s3c6410平台(一)
- SQL Server 2000 未公开的存储过程
- DIV弹出式登录窗口
- Java - 批量插入用法(jdbcTemplate)