【问题】
在折腾:
【记录】编译配置好的xscale版本的crosstool-ng-1.18.0
期间,解决了:
后,结果又出现另外的错误:
[email protected] ~/develop/crosstool-ng/crosstool-ng-1.18.0_build $ ct-ng build [INFO ] Performing some trivial sanity checks [INFO ] Build started 20130731.151836 [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 0.89s (at 00:48) [INFO ] ================================================================= [INFO ] Retrieving needed toolchain components' tarballs [EXTRA] Using 'linux-custom' from custom location [INFO ] Retrieving needed toolchain components' tarballs: done in 3.16s (at 00:51) [INFO ] ================================================================= [INFO ] Extracting and patching toolchain components [INFO ] Extracting and patching toolchain components: done in 8.77s (at 01:00) [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 487.49s (at 09:13) [INFO ] ================================================================= [INFO ] Installing MPFR for host [EXTRA] Configuring MPFR [EXTRA] Building MPFR [EXTRA] Installing MPFR [INFO ] Installing MPFR for host: done in 227.55s (at 13:00) [INFO ] ================================================================= [INFO ] Installing MPC for host [EXTRA] Configuring MPC [EXTRA] Building MPC [EXTRA] Installing MPC [INFO ] Installing MPC for host: done in 114.11s (at 14:55) [EXTRA] Saving state to restart at step 'binutils_for_host'... [INFO ] ================================================================= [INFO ] Installing binutils for host [EXTRA] Configuring binutils [EXTRA] Building binutils [EXTRA] Installing binutils [INFO ] Installing binutils for host: done in 626.43s (at 25:23) [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 954.27s (at 41:21) [EXTRA] Saving state to restart at step 'kernel_headers'... [INFO ] ================================================================= [INFO ] Installing kernel headers [EXTRA] Installing kernel headers [ERROR] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/unifdef.c:209:25: error: conflicting types for 'getline' [ERROR] make[3]: *** [scripts/unifdef] Error 1 [ERROR] make[2]: *** [headers_install] Error 2 [ERROR] make[1]: *** [headers_install] Error 2 [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing kernel headers' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/[email protected]] [ERROR] >> called from: do_kernel_install[scripts/build/kernel/[email protected]] [ERROR] >> called from: do_kernel_headers[scripts/build/kernel/[email protected]] [ERROR] >> called from: main[scripts/[email protected]] Current command: 'make' '-C' '/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom' 'O=/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-kernel-headers' 'ARCH=arm' 'INSTALL_HDR_PATH=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot/usr' 'V=0' 'headers_install' 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>
对应的详细的log内容:
[INFO ] ================================================================= [DEBUG] Using kernel’s headers_install [EXTRA] Installing kernel headers [DEBUG] ==> Executing: ‘make’ ‘-C’ ‘/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom’ ‘O=/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-kernel-headers’ ‘ARCH=arm’ ‘INSTALL_HDR_PATH=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot/usr’ ‘V=0’ ‘headers_install’ [ALL ] make[1]: Entering directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom’ [ALL ] make[2]: arm-xscale-linux-gnu-gcc: Command not found [ALL ] CHK include/linux/version.h [ALL ] UPD include/linux/version.h [ALL ] HOSTCC scripts/basic/fixdep [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c: In function ‘parse_config_file’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c:242:4: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c: In function ‘parse_dep_file’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c:319:4: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c: In function ‘traps’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c:371:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/fixdep.c:373:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [ALL ] HOSTCC scripts/basic/docproc [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c: In function ‘find_export_symbols’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:188:5: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:191:5: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:197:5: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:200:5: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c: In function ‘singfunc’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:267:17: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c: In function ‘parse_file’: [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:300:6: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:305:6: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:310:6: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:316:6: warning: array subscript has type ‘char’ [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/basic/docproc.c:319:6: warning: array subscript has type ‘char’ [ALL ] HOSTCC scripts/unifdef [ERROR] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/unifdef.c:209:25: error: conflicting types for ‘getline’ [ALL ] /usr/include/sys/stdio.h:37:9: note: previous declaration of ‘getline’ was here [ALL ] scripts/Makefile.host:118: recipe for target `scripts/unifdef’ failed [ERROR] make[3]: *** [scripts/unifdef] Error 1 [ALL ] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/Makefile:941: recipe for target `headers_install’ failed [ERROR] make[2]: *** [headers_install] Error 2 [ALL ] Makefile:119: recipe for target `headers_install’ failed [ERROR] make[1]: *** [headers_install] Error 2 [ALL ] make[1]: Leaving directory `/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom’ [ERROR] [ERROR] >> Build failed in step ‘Installing kernel headers’ [ERROR] >> called in step ‘(top-level)’ [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/[email protected]] [ERROR] >> called from: do_kernel_install[scripts/build/kernel/[email protected]] [ERROR] >> called from: do_kernel_headers[scripts/build/kernel/[email protected]] [ERROR] >> called from: main[scripts/[email protected]] |
即:
[ERROR] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/unifdef.c:209:25: error: conflicting types for ‘getline’ |
【解决过程】
1.很久很久之前,貌似就见过此问题。
2.参考:
libc/uClibc: fix building on system with recent glibc
去改个别的名字:
D:\tmp\tmp_dev_root\cgwin\home\CLi\develop\crosstool-ng\crosstool-ng-1.18.0_build\.build\src\linux-custom\scripts\unifdef.c
改为:
static void flushline(bool); //static Linetype getline(void); static Linetype get_line(void); static Linetype ifeval(const char **); ...... /* * The driver for the state machine. */ static void process(void) { Linetype lineval; for (;;) { linenum++; //lineval = getline(); lineval = get_line(); trans_table[ifstate[depth]][lineval](); debug("process %s -> %s depth %d", linetype_name[lineval], ifstate_name[ifstate[depth]], depth); } } /* * Parse a line and determine its type. We keep the preprocessor line * parser state between calls in the global variable linestate, with * help from skipcomment(). */ static Linetype //getline(void) get_line(void) {
3.修改好之后,用exit 2去继续编译:
[INFO ] ================================================================= [INFO ] Installing kernel headers [EXTRA] Installing kernel headers [ERROR] /home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/unifdef.c:209:25: error: conflicting types for 'getline' [ERROR] make[3]: *** [scripts/unifdef] Error 1 [ERROR] make[2]: *** [headers_install] Error 2 [ERROR] make[1]: *** [headers_install] Error 2 [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing kernel headers' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/[email protected]] [ERROR] >> called from: do_kernel_install[scripts/build/kernel/[email protected]] [ERROR] >> called from: do_kernel_headers[scripts/build/kernel/[email protected]] [ERROR] >> called from: main[scripts/[email protected]] Current command: 'make' '-C' '/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom' 'O=/home/CLi/develop/crosstool-ng/crosstool-ng-1.18.0_build/.build/arm-xscale-linux-gnueabi/build/build-kernel-headers' 'ARCH=arm' 'INSTALL_HDR_PATH=/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/arm-xscale-linux-gnueabi/sysroot/usr' 'V=0' 'headers_install' 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> exit 2
然后就可以继续编译了。
【总结】
如
libc/uClibc: fix building on system with recent glibc
所述,getline的bug,是自从glibc 2.10就有了。
解决办法是:
把getline随便改个别的名字即可。比如get_line,或像:
Patchwork scripts/unifdef.c: rename getline symbol to something else
中去改为parseline等等,都可以。
注意:
文件中不止一处getline,注意要都修改了,不要漏了,才可以。
转载请注明:在路上 » 【已解决】crosstool-ng在Installing kernel headers时出错:[ERROR] /xxx/crosstool-ng/crosstool-ng-1.18.0_build/.build/src/linux-custom/scripts/unifdef.c:209:25: error: conflicting types for ‘getline’