我刚从C开始。我正在尝试编译以下代码并执行它,但是我收到了错误。
同样运行size
在BS或数据堆栈中什么也没有显示?
#include<stdio.h>
/* test.c: My first C program on a Linux */
int main(void)
{
printf("Hello! This is a test prgoram.\n");
return 0;
}
编译工作:
gcc -c test.c -o test
执行:
bash: ./test: cannot execute binary file: Exec format error
尺寸:
text data bss dec hex filename
108 0 0 108 6c test
答案 0 :(得分:13)
好的,因为没有人想要想要说明原因......你需要删除 -c 选项,因为 according to the man :
-c选项表示不运行链接器。然后输出包含汇编程序输出的目标文件。
基本上,您没有创建完全可执行文件just object files。
以下是有关编译工作原理的一些快速信息:http://courses.cms.caltech.edu/cs11/material/c/mike/misc/compiling_c.html
答案 1 :(得分:3)
在这种情况下,-c
标志不正确:
gcc test.c -o test
-c此选项用于编译程序。
答案 2 :(得分:0)
使用age=todaydate-birthdate
,然后gcc test.c -o test
。
./test
用于编译程序(创建没有链接的目标文件)
-c
用于编译和链接程序(创建可执行文件)并将生成的可执行文件保存在指定的输出文件中
e.g。 -o
编译test.c并在链接后创建一个名为gcc test.c -o test
的可执行文件(在-o标志之后指定)
没有-o标志test
编译和链接以创建名为gcc
的可执行文件(默认)
例如a.out
会创建gcc test.c
,您可以将其作为a.out
有关详细信息,请参阅./a.out
。