Linux
執行已編譯的 C 程序時遇到問題
我正在通過 VirtualBox 執行 Ubuntu v10.04。為了測試我在虛擬機中創建的文件的持久性,我編寫了一個非常基本的 C 程序。當我關閉虛擬機並重新啟動它時,我看到文件已被保留。
發生什麼了:
- 我可以檢查目錄
ls /root/
並查看兩者program_name.c
和編譯的program_name
- 我使用這個命令來編譯:
gcc program_name.c -o program_name
- 我可以執行
./a.out
,程序將正常執行。- 正如我所期望的那樣,打開 C 程式碼
nano program_name.c
會顯示程序。問題是…
- 當我嘗試通過該程序時
./program_name
,沒有任何反應!- 如果我檢查退出狀態 (
echo $?
),它為零。我很難理解為什麼我不能執行編譯的 C 程序,即使我能找到它。考慮到我可以找到所有文件
./a.out
並正確執行它,這對我來說是最奇怪的。編輯:
為更清晰的展示而編輯。
編輯關於答案…
如果其他人來此尋求幫助,應該注意的是,雖然該
file program_name
命令確實顯示文件是空白的,但原因尚未確定。在重新啟動虛擬機之前,我成功執行了執行檔。也許我沒有正確關閉虛擬機?無論如何,檢查文件是/肯定有幫助的!
由於您使用 -o 選項重命名已編譯的程序,因此您現在擁有的 a.out 屬於其他內容(早期版本或完全不相關的內容)。
您的程序可能正在執行,但沒有返回任何輸出。檢查文件大小並執行
file program_name
以說服自己它是一個執行檔,然後查看程式碼應該做什麼——也許帶一個參數。