我编译了这个程序:
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
使用此命令:
gcc -c "hello.c" -o hello
当我尝试执行hello时,我得到了
bash: ./hello: Permission denied
因为权限是
-rw-r--r-- 1 nathan nathan 856 2010-09-17 23:49 hello
出于某种原因?
但无论如何......在更改权限并尝试再次执行后,我得到了
bash: ./hello: cannot execute binary file
我正在使用gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3
我在这里做错了什么?这一点显而易见......对我来说,用疲惫的眼睛试图找出这个简单的问题为时已晚......
P.S。我(有时)会做比Hello World更复杂的程序,但是gcc正在全面地做这件事......
答案 0 :(得分:25)
取出-c
。这是用于制作目标文件,而不是可执行文件。
答案 1 :(得分:6)
-c
标志告诉它不要链接,所以你有一个目标文件,而不是二进制可执行文件。
事实上,如果你在没有-o
标志的情况下运行它,你会发现默认输出文件是hello.o
。
作为参考(和咯咯笑),-c
标志上的人员条目:
-c Compile or assemble the source files, but do not link. The linking stage simply is not done.
The ultimate output is in the form of an object file for each source file.
By default, the object file name for a source file is made by replacing the suffix .c, .i, .s,
etc., with .o.
Unrecognized input files, not requiring compilation or assembly, are ignored.
答案 2 :(得分:3)
编译:{{1}}