我是一个C编程新手。当我试图编译它的时候,我得到了一个 a.out 文件(我不知道它是从哪里来的),它不知怎么就消失了。这是怎么回事?
下面是我运行的命令:
$ gcc hello.c
$ ls
a.out hello hello.c
$ a.out
a.out: command not found
$ gcc a.out
a.out: file not recognized: File truncated
collect2: error: ld returned 1 exit status
$ ./hello
Hello, world!$ ./a.out
bash: a.out: No such file or directory
$ ls
hello hello.c
3条答案
按热度按时间1yjd4xko1#
a.out
是由gcc
生成的默认可执行文件名。(您真的不应该这样做-因为它将a.out
作为 input 传递给gcc
),它尝试创建一个 newa.out
,但是失败了,因为它尝试将现有的a.out
作为 source 文件读取,事实并非如此,这就是它“消失”的原因。如果希望
gcc
生成具有特定名称的可执行文件,请使用-o
开关,后跟所需的名称:将生成名为
hello
的可执行文件,该文件可以使用kt06eoxx2#
a.out
是默认的可执行文件,因为你没有告诉GCC该如何命名它(通过使用-o
)。仅仅输入a.out
不会运行它,因为它在当前目录中,Linux不会像其他坏掉的操作系统那样将当前目录放在路径中,所以你必须输入./a.out
来运行它。您后来键入了
gcc a.out
,这就删除了它,并告诉gcc尝试编译可执行文件,就好像它是一个C程序一样,这是没有意义的,所以它产生的a.out
是空的。你想做的是:
或者更好:
af7jpaap3#
除了前面的答案之外,我建议您使用
这将创建一个名为“hello”的可执行文件,而不是默认的“a.out”。当然,你可以随意命名它。