分页: 1 / 1

ubuntu下编译个hello.c 执行时总是提醒无法执行二进制文件

发表于 : 2011-08-20 21:59
soulofsnow
在vmware里面新装了个ubuntu11.04;
创建了个hello.c文件;
gcc -o hello -c hello.c;
./hello

提示 bash: ./hello: 无法执行二进制文件

chmod a+x hello 已经执行过了。 不知道有没有遇到过类似问题的朋友。



过程可参考这里:

root@snow-virtual-machine:/mySource# ll
总用量 12
drwxr-xr-x 2 snow snow 4096 2011-08-20 22:04 ./
drwxr-xr-x 23 root root 4096 2011-08-20 20:50 ../
-rw-r--r-- 1 root root 73 2011-08-20 22:03 hello.c
root@snow-virtual-machine:/mySource# cat hello.c
#include <stdio.h>

int main()
{
printf("hello world!\n");
return 0;
}
root@snow-virtual-machine:/mySource# gcc -o hello -c hello.c
root@snow-virtual-machine:/mySource# ll
总用量 16
drwxr-xr-x 2 snow snow 4096 2011-08-20 22:04 ./
drwxr-xr-x 23 root root 4096 2011-08-20 20:50 ../
-rw-r--r-- 1 root root 856 2011-08-20 22:04 hello
-rw-r--r-- 1 root root 73 2011-08-20 22:03 hello.c
root@snow-virtual-machine:/mySource# chmod a+x hello
root@snow-virtual-machine:/mySource# ll
总用量 16
drwxr-xr-x 2 snow snow 4096 2011-08-20 22:04 ./
drwxr-xr-x 23 root root 4096 2011-08-20 20:50 ../
-rwxr-xr-x 1 root root 856 2011-08-20 22:04 hello*
-rw-r--r-- 1 root root 73 2011-08-20 22:03 hello.c
root@snow-virtual-machine:/mySource# ./hello
bash: ./hello: 无法执行二进制文件
root@snow-virtual-machine:/mySource# sudo ./hello
./hello: 1: Syntax error: word unexpected (expecting ")")

Re: ubuntu下编译个hello.c 执行时总是提醒无法执行二进制文件

发表于 : 2011-08-20 22:17
neaghfoz
为什么你要用-c参数?这样编译是还没有link的,去掉-c参数即可。

Re: ubuntu下编译个hello.c 执行时总是提醒无法执行二进制文件

发表于 : 2011-08-20 22:22
neaghfoz
补充一点,你这样生成的hello是一个obj文件,再执行一次

代码: 全选

gcc hello
这样就能生成二进制的a.out了。
man一下gcc就清楚一些选项的用法了。

Re: ubuntu下编译个hello.c 执行时总是提醒无法执行二进制文件

发表于 : 2011-08-20 22:33
soulofsnow
neaghfoz 写了:为什么你要用-c参数?这样编译是还没有link的,去掉-c参数即可。

恩,是的。谢谢了。

Re: ubuntu下编译个hello.c 执行时总是提醒无法执行二进制文件

发表于 : 2013-07-24 11:20
朱鸽Ubuntu
请问这个问题你是怎么解决我,我才遇到了同样的问题,新手 :em01