【发布时间】:2018-03-30 19:10:16
【问题描述】:
我从一个 C 项目创建了一个汇编代码,但是当我运行它时,我得到了这个编译错误:
Compilation Error
/usr/bin/x86_64-linux-gnu-ld: warning: cannot find entry symbol _start;
defaulting to 00000000004000b0
/tmp/tmpM7HOI5/squares.o: In function `main':
main.c:(.text+0x2e): undefined reference to `malloc'
main.c:(.text+0x43): undefined reference to `perror'
main.c:(.text+0x4d): undefined reference to `exit'
main.c:(.text+0x54): undefined reference to `stdin'
main.c:(.text+0x68): undefined reference to `fgets'
main.c:(.text+0xb5): undefined reference to `atoi'
main.c:(.text+0x12d): undefined reference to `free'
main.c:(.text+0x14d): undefined reference to `malloc'
main.c:(.text+0x158): undefined reference to `stdin'
main.c:(.text+0x16c): undefined reference to `fgets'
main.c:(.text+0x17f): undefined reference to `strtok'
main.c:(.text+0x18f): undefined reference to `atoi'
main.c:(.text+0x1b5): undefined reference to `strtok'
main.c:(.text+0x1c5): undefined reference to `atoi'
main.c:(.text+0x1ef): undefined reference to `strtok'
main.c:(.text+0x1ff): undefined reference to `atoi'
main.c:(.text+0x229): undefined reference to `strtok'
main.c:(.text+0x239): undefined reference to `atoi'
main.c:(.text+0x25e): undefined reference to `free'
main.c:(.text+0x2f6): undefined reference to `printf'
似乎所有库调用都未定义。
编译我使用:
gcc -std=c99 -Wall -O2 -lm -S main.c
【问题讨论】:
-
这些错误是因为您没有与标准 C 库链接。
-
另请注意,您不会收到编译错误。或装配错误。你得到 linker 错误。
-
编译步骤是否显示了打印错误的命令?还是有没有其他命令没有显示?
-
似乎显示的命令不是产生错误的命令。
-
只需按照通常的方式编译并添加-save-temps(而不是-S)