只是为了兴趣,我想手动编译和运行最简单的C程序;
//t.c
int main() {
return 0;
}
所以我想做:
$ cpp t.c
: 在这种情况下不应该做任何事情,因为不需要做任何预处理$ cc1 t.c
:应该编译t.c
->t.s
$ as -o t.o t.c
: 应该组装t.s
->t.o
$ ld t.o
: 应该产生可执行文件a.out
(实际上没有什么可做的)
我遇到的问题是as
,因为运行最终命令会产生:
ld: warning: cannot find entry symbol _start; defaulting to 00000000000400b0
这是怎么回事?我故意遗漏了libc
这一点,以使其尽可能简单,但我不明白发生了什么。我错过了什么标志?