Linux

執行已編譯的 C 程序時遇到問題

  • April 14, 2019

我正在通過 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以說服自己它是一個執行檔,然後查看程式碼應該做什麼——也許帶一個參數。

引用自:https://unix.stackexchange.com/questions/65035