我的C程序无法运行`无法执行二进制文件:执行格式错误`

时间:2016-01-07 11:05:06

标签: c

我刚从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

3 个答案:

答案 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