[英]What does, “ usage: ./a.out <integer value>” mean?
[英]What is this a.out and what makes it disappear?
我是 C 編程的新手。 當我試圖編譯它時,我得到了一個 .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
a.out
是gcc
生成的默認可執行文件名稱。 一旦您調用gcc a.out
(您真的不應該這樣做 - 因為它正在將a.out
作為輸入傳遞給gcc
),它會嘗試創建一個新的a.out
,但由於它試圖讀取現有的內容而失敗a.out
作為源文件,它不是。 這就是讓它“消失”的原因。
如果您希望gcc
生成具有特定名稱的可執行文件,請使用-o
開關后跟所需的名稱:
gcc hello.c -o hello
將生成名為hello
的可執行文件,可以使用
./hello
除了以前的答案,我建議你使用
gcc -o hello hello.c
這將創建一個名為“hello”的可執行文件,而不是默認的“a.out”。 當然,您可以隨心所欲地稱呼它。
a.out
是默認的可執行文件,因為您沒有告訴 GCC 命名它(通過使用-o
)。 只輸入a.out
不會運行它,因為它在當前目錄中,而 Linux 不會像其他損壞的操作系統那樣將當前目錄放在路徑中,因此您必須輸入./a.out
才能運行它。
您稍后鍵入gcc a.out
,它刪除了它,並告訴 gcc 嘗試像編譯 C 程序一樣編譯可執行文件,這是沒有意義的,因此它生成的a.out
是空的。
你的意思是:
gcc hello.c
./a.out
或者甚至更好:
gcc -o hello hello.c
./hello
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.