miniGui 移植遇到的一个问题configure: error: C..

今天下午按照既定配置交叉编译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 编译没有通过。

作者: swet123   发布时间: 2011-01-05