今天下午按照既定配置交叉编译miniGui 的时候遇到了一个问题:
error: C compiler cannot create executables
[root]@libminigui-1.6.10#./buildlib-uclinux-44b0x.sh checking build system type... i386-pc-linux-gnu checking host system type... arm-elf-linux-gnu checking target system type... arm-elf-linux-gnu checking for arm-elf-linux-gcc... arm-elf-gcc checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. ./buildlib-uclinux-44b0x.sh: line 14: --disable-shared: command not found ./buildlib-uclinux-44b0x.sh: line 16: --disable-lite: command not found ./buildlib-uclinux-44b0x.sh: line 43: --disable-jpgsupport: command not found [root]@libminigui-1.6.10#
|
人家说了要 See config.log, 那就乖乖的看config.log 吧。
略过前文不叙,转帖出事地段:
configure:2612: checking for C compiler default output file name configure:2639: arm-elf-gcc -O2 -g -D__linux__ -I/home/air_lcd/uClinux-dist/linux-2.4.x/include -I/home/air_lcd/uClinux-dist/uClibc/include -fno-builtin -nostartfiles -Wall -elf2flt -static -L/home/air_lcds/uClinux-dist/uClibc/lib -L/home/air_lcd/uClinux-dist/linux-2.4.x/lib conftest.c >&5 /usr/local/arm-elf/bin/ld.real: warning: cannot find entry symbol _start; defaulting to 00000000 configure:2642: $? = 0 configure:2680: result: configure: failed program was: | /* confdefs.h. */ | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:2687: error: C compiler cannot create executables See `config.log
|
看来config不知道在哪里找了断代码在测试我的交叉编译环境,他没有编译通过!!
cannot find entry symbol _start; defaulting to 00000000
头疼,一个main函数,怎么说没有入口呢?
google了半天, 有的说,gcc 装的失败啦,重装吧。 有的说环境变量弄错了,重新弄吧。我一一否定。但是问题仍然存在。
最后自己写了个程序, 执行
arm-elf-gcc -O2 -g -D__linux__ -I/home/air_lcd/uClinux-dist/linux-2.4.x/include -I/home/air_lcd/uClinux-dist/uClibc/include -fno-builtin -nostartfiles -Wall -elf2flt -static -L/home/air_lcds/uClinux-dist/uClibc/lib -L/home/air_lcd/uClinux-dist/linux-2.4.x/lib conftest.c
|
果然有这个问题。
逐步删除 编译选项。 发现当删除了“ -nostartfiles ” 就正常了。
原来都是 nostartfiles 惹的祸。
man 了一下 gcc
-nostartfiles Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used.
|
明白了, 原来nostartfiles 的意思是, 不用main来作为 入口, 难怪他告诉我找不到入口。
OK! 搞定。
遇事一定要沉下心去搞, 另外不要迷信google,浪费时间。
PS 鄙视一下百度。 啥都搜不到。
网上这个错误貌似出现很多。 原因各有不同。反正大致思路就是,config gcc 编译没有通过。
阅读(3139) | 评论(1) | 转发(0) |