crosstool-ng构建的一个错误的解决

这段时间,既在做一个基于已有芯片平台的项目,也要进行新芯片平台的预研。在新平台学习中,发现没有自带交叉编译器——无论是光盘自带还是从官网下载,都没有。倒是有一个文档讲述了如何自己构建交叉编译器。一直以来,我都没有自己搞过交叉编译器,这也让我学习了一下。

关于crosstool-ng,网上有很多资料,也有介绍编译过程的。有空再写一篇文章吧。这里只讲一下我在构建过程遇到的一个小错误。

在最后一个编译crosstool-ng时,出现下面的错误:

[INFO ]  Extracting and patching toolchain components
[EXTRA]    Extracting 'mpc-0.8.1'
[ERROR]  
[ERROR]  >>
[ERROR]  >>  Build failed in step 'Extracting and patching toolchain components'
[ERROR]  >>        called in step '(top-level)'
[ERROR]  >>
[ERROR]  >>  Error happened in: CT_DoExecLog[scripts/functions@257]
[ERROR]  >>        called from: CT_Extract[scripts/functions@953]
[ERROR]  >>        called from: do_mpc_extract[scripts/build/companion_libs/140-mpc.sh@21]
[ERROR]  >>        called from: do_companion_libs_extract[scripts/build/companion_libs.sh@22]
[ERROR]  >>        called from: main[scripts/crosstool-NG.sh@606]
[ERROR]  >>
[ERROR]  >>  For more info on this error, look at the file: 'build.log'
[ERROR]  >>  There is a list of known issues, some with workarounds, in:
[ERROR]  >>      '/home/latelee/crosstool/depends/install/ct-ng_install/crosstool-ng-hg-install/share/doc/crosstool-ng/ct-ng.hg+default-069f43a215cc/B - Known issues.txt'
[ERROR]  
[ERROR]  (elapsed: 0:02.63)
[00:02] / make[1]: *** [build] Error 2
make: *** [build.8] Error 2

其实从上面的信息看不出是什么错误导致的,但人家也说了去看build.log文件,找到这个文件,里面有真正的错误信息:

[EXTRA]    Extracting 'mpc-0.8.1'
[DEBUG]    ==> Executing: 'mkdir' '-p' 'mpc-0.8.1'
[DEBUG]    ==> Executing: 'tar' '--strip-components=1' '-C' 'mpc-0.8.1' '-xv' '-f' '-'
[FILE ]    tar: Archive is compressed. Use -z option
[FILE ]    tar: Error is not recoverable: exiting now

看到是解压一个压缩包出错了。这个包名是mpc-0.8.1.tar.xz,上面提到的命令无法正确解压,试了几次也不行,后来自己想出一种方法。

把这个包自行解压到src目录中。然后再在src目录的.mpc-0.8.1.extracting文件改名为.mpc-0.8.1.extracted,再编译一次,搞定了。

与src同级有tarball目录,前者是存放已经解压好的库、工具,后者存放的是下载的压缩包。

这个方法是欺骗了crosstool-ng,让它以为已经压缩好了。实际上,从出错后的.mpc-0.8.1.extracting文件可以看出,正是在解压过程中出现,一旦解压了,就变成.mpc-0.8.1.extracted文件了。


李迟记于2014年8月24日



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值