crosstool-ng构建的一个错误的解决 | 迟思堂工作室
A-A+

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

2014-09-10 22:45 代码生活 暂无评论 阅读 36,651 次

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



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate




给我留言