用arm-elf-gcc编译的时候需要加上-elf2flt这个选项,而且要加在最前头,例如,编译hello.c的命令为:
arm-elf-gcc -elf2flt -o hello hello.c
这个问题困扰了我比较久,没有加-elf2flt选项时,屏幕显示
"usr/local/lib/bcc-lib/arm-elf/2.95.3/libgcc.a(_main.o)(.text +0xC4)":
In function '_do_global_ctors' undefined reference to '_Ctor_list_'
"usr/local/lib/bcc-lib/arm-elf/2.95.3/libgcc.a(_main.o)(.data +0x0)":
In function '_do_global_ctors' undefined reference to '_Dtor_list_'
把-elf2flt加到-o后面也会出现错误。
elf2flt 指定自动调用elf转换flat格式的工具;之所以要使用该选项是因为,由于GNU工具本身并不支持flat格式的二进制文件,然而,uClinux目前只支持flat格式的可执行文件,因此必须使用相应的二进制工具进行格式转换。flat格式是对elf格式的很大的文件头和一些段信息做了简化的文件格式。
阅读(515) | 评论(0) | 转发(0) |