【问题】
折腾:
【记录】编译配置好的xscale版本的crosstool-ng-1.18.0
期间,又遇到,和之前的:
类似的错误:
[INFO ] Installing kernel headers: done in 1854.80s (at 72:22) [EXTRA] Saving state to restart at step 'libc_start_files'... [INFO ] ================================================================= [INFO ] Installing C library headers & start files [EXTRA] Configuring C library [EXTRA] Installing C library headers [ERROR] make[2]: *** [manual/install-headers] Error 2 [ERROR] make[1]: *** [install-headers] Error 2 [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing C library headers & start files' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257] [ERROR] >> called from: do_libc_backend_once[scripts/build/libc/glibc-eglibc.sh-common@380] [ERROR] >> called from: do_libc_backend[scripts/build/libc/glibc-eglibc.sh-common@143] [ERROR] >> called from: do_libc_start_files[scripts/build/libc/glibc-eglibc.sh-common@60] [ERROR] >> called from: main[scripts/crosstool-NG.sh@632] Current command: 'make' '-j4' '-l' 'install_root=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot' 'install-bootstrap-headers=yes' 'install-headers' exited with error code: 2 Please fix it up and finish by exiting the shell with one of these values: 1 fixed, continue with next build command 2 repeat this build command 3 abort build ct-ng:~/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-libc-startfiles>
详细log是:
[ALL ] make[3]: Entering directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/gnulib' [ALL ] make[3]: `install-headers' is up to date. [ALL ] make[3]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/gnulib' [ALL ] /usr/bin/make subdir=wctype -C wctype ..=../ install-headers [ALL ] make[3]: Entering directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/wctype' [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/tools/bin/install -c -m 644 wctype.h /home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot/usr/include/wctype.h [ALL ] make[3]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/wctype' [ALL ] /usr/bin/make subdir=manual -C manual ..=../ install-headers [ALL ] make[3]: Entering directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/manual' [ALL ] Makefile:240: *** mixed implicit and normal rules. Stop. [ALL ] make[3]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9/manual' [ALL ] Makefile:207: recipe for target `manual/install-headers' failed [ERROR] make[2]: *** [manual/install-headers] Error 2 [ALL ] make[2]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/glibc-2.9' [ALL ] Makefile:12: recipe for target `install-headers' failed [ERROR] make[1]: *** [install-headers] Error 2 [ALL ] make[1]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-libc-startfiles' [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing C library headers & start files' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257] [ERROR] >> called from: do_libc_backend_once[scripts/build/libc/glibc-eglibc.sh-common@380] [ERROR] >> called from: do_libc_backend[scripts/build/libc/glibc-eglibc.sh-common@143] [ERROR] >> called from: do_libc_start_files[scripts/build/libc/glibc-eglibc.sh-common@60] [ERROR] >> called from: main[scripts/crosstool-NG.sh@632]
【解决过程】
1.很明显,还是要去找到出错的makefile:
D:\tmp\tmp_dev_root\cgwin\home\CLi\develop\crosstool-ng\crosstool-ng-1.18.0_build\.build\src\glibc-2.9\manual\Makefile
的位置:
# Create stamp files if they don't exist, so the parent makefile's rules for # updating the library archives are happy with us, and never think we have # changed the library. lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) ifdef objpfx .PHONY: stubs stubs: $(objpfx)stubs endif $(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: $(make-target-directory) touch $@
对应是:
$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%:
按照之前的办法,还是去修改,但是此处不知道如何修改。
并且是,如果是每次都修改一个类似的地方,则后续如果出现多次,岂不是改的累屎了。
2.所以,还是中断编译,去使用配置:
Paths and misc options —> Companion tools —> [*] Build some companion tools [*] make |
解决此问题:
ct-ng menuconfig
.config – crosstool-NG 1.18.0 Configuration Try features marked as EXPERIMENTAL CT_EXPERIMENTAL: – non-existant, in which case you could also try hacking it in and send me the result |
选上Try features marked as EXPERIMENTAL:
选上Companion tools的Build some companion tools中的make:
然后重新编译ct-ng build一把试试。
3.结果其去下载并编译make了:
[EXTRA] Extracting ‘make-3.81’ [EXTRA] ================================================================= [EXTRA] Installing make [02:14] | |
4.但是发现一个问题,每次都是从头开始编译,要消耗尽一小时,太慢了。。。
而之前是参考了:
说是:
1、设置croostool-NG调试标记 ***crosstool-Ng behavior*** [*]Debug crosstool-NG # [*]Save intermediate steps#保存编译过程中的中间步骤,在没选中上一项之前,这一项不出现。 如果你足够幸运,第一次就能编译通过,这一步就没有必要选。如果很不幸,中间出现了错,这一步就显得相当重要了,可以让节省很多时间。因为有了这一项,在编译的过程中,croostool-ng会记录 下每一步的状态。这样在对出现的错误进行纠正后,就可以从出错这一步开再继续编译,当然你也可以从任一个已保存的状态点开始。如果没有选这一项的话,每出错一次就要从头重新开始编译,这可是相当浪费时间。 |
结果我这里,已经是选上对应的选项的:
结果完全没效果。
所以,再去看看其说明:
Save intermediate steps They are treated as a whole. |
所以,先去看看支持哪些步骤:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build $ ct-ng list-steps Available build steps, in order: - libc_check_config - companion_libs_for_build - binutils_for_build - companion_libs_for_host - binutils_for_host - cc_core_pass_1 - kernel_headers - libc_start_files - cc_core_pass_2 - libc - cc_for_build - cc_for_host - libelf_for_target - binutils_for_target - debug - test_suite - finish Use "<step>" as action to execute only that step. Use "+<step>" as action to execute up to that step. Use "<step>+" as action to execute from that step onward.
所以,可以接着去试试:
ct-ng libc_start_files+
结果出错了:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build $ ct-ng libc_start_files+ [INFO ] Performing some trivial sanity checks [INFO ] Build started 20130731.171128 [INFO ] Building environment variables [EXTRA] Preparing working directories [ERROR] The previous build did not reach the point where it could be restarted at 'libc_start_files' [ERROR] [ERROR] >> [ERROR] >> Build failed in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_Abort[scripts/functions@331] [ERROR] >> called from: CT_TestOrAbort[scripts/functions@361] [ERROR] >> called from: CT_DoLoadState[scripts/functions@1308] [ERROR] >> called from: main[scripts/crosstool-NG.sh@620] Current command (unknown), exited with error code: 1 Please fix it up and finish by exiting the shell with one of these values: 1 fixed, continue with next build command 3 abort build ct-ng:~/develop/crosstool-ng/crosstool-ng-1.18.0_build>
也是正常的,因为,这次,已经换了make了,也没有执行到上述的libc_start_files
但是,证明这个方式是可以指定从某个阶段,继续编译的,所以,下次遇到出错,就可以这么用了。
这次的话,继续从头开始编译。。。。
5.重新开始编译,然后由于当前cygwin好像有bug,导致内存泄露,导致我的电脑的8G内存都被占用完了,所以出错:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build $ ct-ng build [INFO ] Performing some trivial sanity checks [INFO ] Build started 20130731.171426 [INFO ] Building environment variables [EXTRA] Preparing working directories [EXTRA] Installing user-supplied crosstool-NG configuration [EXTRA] ================================================================= [EXTRA] Dumping internal crosstool-NG configuration [EXTRA] Building a toolchain for: [EXTRA] build = i686-pc-cygwin [EXTRA] host = i686-pc-cygwin [EXTRA] target = arm-xscale-linux-gnueabi [EXTRA] Dumping internal crosstool-NG configuration: done in 1.83s (at 00:58) [INFO ] ================================================================= [INFO ] Retrieving needed toolchain components' tarballs [EXTRA] Using 'linux-custom' from custom location [INFO ] Retrieving needed toolchain components' tarballs: done in 3.72s (at 01:02) [INFO ] ================================================================= [INFO ] Extracting, patching and installing companion tools [EXTRA] ================================================================= [EXTRA] Installing make [EXTRA] Installing make: done in 266.80s (at 05:30) [INFO ] Extracting, patching and installing companion tools: done in 267.97s (at 05:30) [INFO ] ================================================================= [INFO ] Extracting and patching toolchain components [INFO ] Extracting and patching toolchain components: done in 7.85s (at 05:38) [EXTRA] Saving state to restart at step 'libc_check_config'... [EXTRA] Saving state to restart at step 'companion_libs_for_build'... [EXTRA] Saving state to restart at step 'binutils_for_build'... [EXTRA] Saving state to restart at step 'companion_libs_for_host'... [INFO ] ================================================================= [INFO ] Installing GMP for host [EXTRA] Configuring GMP [EXTRA] Building GMP [EXTRA] Installing GMP [INFO ] Installing GMP for host: done in 715.81s (at 17:41) [INFO ] ================================================================= [INFO ] Installing MPFR for host [19:09] / Configuring MPFR [EXTRA] Building MPFR [EXTRA] Installing MPFR [INFO ] Installing MPFR for host: done in 386.54s (at 24:07) [INFO ] ================================================================= [INFO ] Installing MPC for host [EXTRA] Configuring MPC [EXTRA] Building MPC [EXTRA] Installing MPC [INFO ] Installing MPC for host: done in 182.22s (at 27:10) [EXTRA] Saving state to restart at step 'binutils_for_host'... [INFO ] ================================================================= [INFO ] Installing binutils for host [EXTRA] Configuring binutils [ERROR] configure: error: cannot create configure.lineno; rerun with a POSIX shell [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing binutils for host' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257] [ERROR] >> called from: do_binutils_backend[scripts/build/binutils/binutils.sh@205] [ERROR] >> called from: do_binutils_for_host[scripts/build/binutils/binutils.sh@92] [ERROR] >> called from: main[scripts/crosstool-NG.sh@632] Current command: 'CFLAGS=-O2 -g -pipe ' 'CXXFLAGS=-O2 -g -pipe ' 'LDFLAGS= ' '/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/binutils-2.22/configure' '--build=i686-build_pc-cygwin' '--host=i686-build_pc-cygwin' '--target=arm-xscale-linux-gnueabi' '--prefix=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi' '--disable-werror' '--enable-ld=yes' '--enable-gold=no' '--with-pkgversion=crosstool-NG 1.18.0' '--disable-multilib' '--disable-nls' '--with-float=softfp' '--with-sysroot=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot' exited with error code: 1 Please fix it up and finish by exiting the shell with one of these values: 1 fixed, continue with next build command 2 repeat this build command 3 abort build ct-ng:~/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-binutils-host-i686-build_pc-cygwin>
错误log是:
[INFO ] ================================================================= [INFO ] Installing binutils for host [EXTRA] Configuring binutils [DEBUG] Extra config passed: '--enable-ld=yes --enable-gold=no --with-pkgversion=crosstool-NG 1.18.0 --disable-multilib --disable-nls' [DEBUG] ==> Executing: 'CFLAGS=-O2 -g -pipe ' 'CXXFLAGS=-O2 -g -pipe ' 'LDFLAGS= ' '/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/binutils-2.22/configure' '--build=i686-build_pc-cygwin' '--host=i686-build_pc-cygwin' '--target=arm-xscale-linux-gnueabi' '--prefix=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi' '--disable-werror' '--enable-ld=yes' '--enable-gold=no' '--with-pkgversion=crosstool-NG 1.18.0' '--disable-multilib' '--disable-nls' '--with-float=softfp' '--with-sysroot=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot' [CFG ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/binutils-2.22/configure: line 423: /usr/bin/expr: Cannot allocate memory [CFG ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/binutils-2.22/configure: line 438: /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/tools/bin/sed: Cannot allocate memory [ERROR] configure: error: cannot create configure.lineno; rerun with a POSIX shell [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing binutils for host' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257] [ERROR] >> called from: do_binutils_backend[scripts/build/binutils/binutils.sh@205] [ERROR] >> called from: do_binutils_for_host[scripts/build/binutils/binutils.sh@92] [ERROR] >> called from: main[scripts/crosstool-NG.sh@632]
所以,很简单,需要重启电脑,再继续重新编译。
然后就可以去试试:
ct-ng binutils_for_host+
或许是支持的了。
6.后来果然是支持的:
CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build $ ct-ng binutils_for_host+ [INFO ] Performing some trivial sanity checks [INFO ] Build started 20130801.093212 [INFO ] Building environment variables [EXTRA] Preparing working directories [EXTRA] Restoring state at step 'binutils_for_host', as requested. [INFO ] ================================================================= [INFO ] Installing binutils for host [EXTRA] Configuring binutils [EXTRA] Building binutils [EXTRA] Installing binutils [INFO ] Installing binutils for host: done in 598.20s (at 10:24) [EXTRA] Saving state to restart at step 'cc_core_pass_1'... [INFO ] ================================================================= [INFO ] Installing pass-1 core C compiler [EXTRA] Configuring gcc [EXTRA] Building gcc [EXTRA] Installing gcc [INFO ] Installing pass-1 core C compiler: done in 1098.50s (at 28:46) [EXTRA] Saving state to restart at step 'kernel_headers'... [INFO ] ================================================================= [INFO ] Installing kernel headers [EXTRA] Installing kernel headers [INFO ] Installing kernel headers: done in 138.42s (at 31:12) [EXTRA] Saving state to restart at step 'libc_start_files'... [INFO ] ================================================================= [INFO ] Installing C library headers & start files [EXTRA] Configuring C library [EXTRA] Installing C library headers [EXTRA] Installing C library start files [INFO ] Installing C library headers & start files: done in 651.26s (at 42:10) [EXTRA] Saving state to restart at step 'cc_core_pass_2'... [INFO ] ================================================================= [INFO ] Installing pass-2 core C compiler [EXTRA] Configuring gcc [EXTRA] Building gcc [EXTRA] Installing gcc [INFO ] Installing pass-2 core C compiler: done in 1307.70s (at 64:06) [EXTRA] Saving state to restart at step 'libc'... [INFO ] ================================================================= [INFO ] Installing C library [EXTRA] Configuring C library [EXTRA] Building C library [ERROR] arm-xscale-linux-gnueabi-gcc: error: spawn: Cannot allocate memory [ERROR] make[3]: *** [/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-libc-final/crypt/md5.os] Error 1 [ERROR] make[2]: *** [crypt/others] Error 2 [ERROR] make[1]: *** [all] Error 2 [ERROR] \ [ERROR] >> [ERROR] >> Build failed in step 'Installing C library' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@257] [ERROR] >> called from: do_libc_backend_once[scripts/build/libc/glibc-eglibc.sh-common@441] [ERROR] >> called from: do_libc_backend[scripts/build/libc/glibc-eglibc.sh-common@143] [ERROR] >> called from: do_libc[scripts/build/libc/glibc-eglibc.sh-common@65] [ERROR] >> called from: main[scripts/crosstool-NG.sh@632] / Current command: 'make' '-j4' '-l' 'all' exited with error code: 2 Please fix it up and finish by exiting the shell with one of these values: 1 fixed, continue with next build command 2 repeat this build command 3 abort build ct-ng:~/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-libc-final>
很明显,此处是又是cygwin的bug,内存泄露,导致无法分配内存。
只能重启,再继续编译了。
但是很明显,此处,已经解决了之前的错误,是可以继续用3.81的make去编译了。
【总结】
之前手动去makefile中的错误,相对来说,比较繁琐。
还是改用crosstool-ng里面提供的3.81的make去编译,可以,相对的,一次性的解决问题。
转载请注明:在路上 » 【已解决】crosstool-ng在Installing C library headers & start files期间出错:Makefile:240: *** mixed implicit and normal rules. Stop.