今天用C做了一个测试程序,就是一个简单的“Hello world”,
#include <stdio.h>
int main(){
printf("Hello, world!\n");
return 0;
}
但我想用另一种方式编译它。我首先用
编译它gcc -c Test.c -o Test.o
然后将其链接到
ld Test.o -lc --entry main -o Test.elf
。 --entry main 以便它理解入口函数是 main 和 -lc 使用 libc.so 库进行 printf,但由于某种原因,当我尝试使用 ./Test.elf 运行它时,它告诉我这个错误: 重击: . /Test.elf:无法执行:找不到所需的文件。如果我不尝试使用 gdb 运行,它会告诉我错误代码是 127。事实上,我正在 Android 上尝试所有这些(以便能够在 aarch64 中编程),但我不这样做不知道它是否会影响这个错误。有人可以帮助我吗?
我不知道我需要做什么。
ld
了解main
和start
。 Start 是真正的入口点,它设置 C 运行时,然后调用 main
。
最简单的事情就是不指定入口点。