我正在尝试在Linux 64位机器上编译一个C语言的hello world程序。我使用ARM交叉编译器将我的应用程序加载到ARM处理器上。然而,当我使用arm-none-eabi-gcc -o hello hello.c
编译代码时,我遇到了一系列错误:
exit'中:
exit.c:(.text.exit+0x2c):对
_exit'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o):在函数_sbrk_r'中:
sbrkr.c:(.text._sbrk_r+0x18):对
_sbrk'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-writer.o):在函数_write_r'中:
writer.c:(.text._write_r+0x20):对
_write'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-closer.o):在函数_close_r'中:
closer.c:(.text._close_r+0x18):对
_close'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-fstatr.o):在函数_fstat_r'中:
fstatr.c:(.text._fstat_r+0x1c):对
_fstat'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-isattyr.o):在函数_isatty_r'中:
isattyr.c:(.text._isatty_r+0x18):对
_isatty'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-lseekr.o):在函数_lseek_r'中:
lseekr.c:(.text._lseek_r+0x20):对
_lseek'的引用未定义
/home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/libc.a(lib_a-readr.o):在函数_read_r'中:
readr.c:(.text._read_r+0x20):对
_read'的引用未定义
collect2: 错误:ld 返回 1当我尝试通过以下方式进行编译时:
arm-none-eabi-gcc -c hello.c
,它会创建一个目标代码hello.o
,这说明编译器正常运行。但是,为什么我的编译返回这样的错误呢?请有经验的人告诉我原因。更新:我现在意识到C运行库未包含在编译中。是否有任何选项需要在编译中包括,或者如何链接库以使用标准函数,例如printf?