如果我有一個名為 ac 的程式檔案hello_world.c,我將使用gcc -std=c11 -o hello_world.exe hello_world.cWindows 作業系統上的命令從中創建一個可執行檔案,然后只需呼叫可執行檔案hello_world,windows 就會執行它,現在在基于 Unix 的作業系統上復制它已經成為一個相當大的挑戰因為是的,我使用命令gcc -std=c11 -o hello_world.exe hello_world.c,終端不會拋出錯誤,但是當我嘗試呼叫程式時hello_world,我得到了the command hello_world找不到的錯誤,請問我該如何解決這個問題?
uj5u.com熱心網友回復:
我收到命令 hello_world 未找到的錯誤
你犯了兩個錯誤:
如果您
some_command在 Windows 中鍵入命令提示符,Windows 會首先在當前目錄中搜索命令some_command(例如some_command.bat或)。some_command.exe如果在此處未找到,Windows 將在目錄中搜索PATH該命令。在 Unix 和 Linux 中情況并非如此。相反,僅
PATH搜索 中的目錄。有些 Linux 發行版的目錄“.”位于PATH. 在這種情況下,Linux 會some_command在當前目錄中搜索。但是,在 Ubuntu 20(作為示例)中,“.”默認情況下不是其中的一部分,PATH因此 Linux 不會some_command在當前目錄中搜索。您必須在命令列中明確指定當前目錄:
./some_command.與 Windows 不同,Unix 和 Linux 不知道檔案擴展名,但點 (
.) 只是一個“普通”字母。一個屬性(實際上是三個屬性)用于將檔案標記為“可執行”。(您可以將此與可以為 Windows 上的檔案設定的“檔案是只讀的”屬性進行比較。)
您可以為可執行檔案添加后綴(例如
.exe,.bat,.sh... 甚至);.txt但在這種情況下,點和后綴是檔案名的一部分:如果你命名你的檔案hello_world.exe,命令不是hello_world但它是hello_world.exe(因為點(.)只是 Unix 和 Linux 的“普通”字母)。就個人而言,我喜歡將后綴添加
.x到 C 編譯的可執行檔案和.shshell 腳本(在 Windows 中你會說:.bat檔案)。不過,這只是我個人的口味。
uj5u.com熱心網友回復:
在 Unix 環境中,您可以將 C 檔案編譯為:
gcc hello_world.c -o hello_world
其中hello_world是編譯輸出的名稱
編譯后你可以使用下面的命令來運行你的程式:
./hello_world
uj5u.com熱心網友回復:
在 unix 環境中,使用以下命令編譯您的 C 程式:
gcc hello_word.c -o hello_world
另外,可執行檔案的后綴沒有任何特殊含義。在使用 command 運行它之前./hello_world,您可能需要使用 command 添加可執行權限chmod x hello_world。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434306.html
下一篇:Windows下的Unix行尾
