c++ - world - terminal mac c




如何在Unix控制台/ Mac終端中編譯和運行C/C++? (9)

一個緊湊的方法可以做到這一點:

make foo && ./$_

很高興有一個單線程,所以你可以輕鬆地重新運行你的可執行文件。

如何在Unix控制台或Mac終端中編譯/運行C或C ++?

(我知道了,忘了它,重新學習它,現在寫下來。)


使用makefile 。 即使對於非常小的(=單個文件)項目,這項工作也許是值得的,因為您可以有多套編譯器設置來測試。 這種調試和部署工作更容易。

閱讀make手冊 ,乍一看似乎很長,但大多數部分可以略過。 總而言之,我花了幾個小時,讓我的工作更有成效。


假設當前目錄不在路徑中,語法是./[name of the program]

例如./a.out


在Unix(Linux,Mac OS X,AIX等)環境中執行的所有應用程序都取決於可執行文件的搜索路徑。

您可以使用以下命令在終端中顯示此路徑:

echo $ PATH

在Mac OS X上(默認情況下),這將顯示以下以冒號分隔的搜索路徑:

在/ usr / bin中:/ bin中:/ usr / sbin目錄:/ sbin目錄:在/ usr / local / bin目錄:在/ usr / X11 / bin中

因此,列出的目錄中的任何可執行文件都可以通過輸入其名稱來運行。 例如:

cat mytextfile.txt

這將運行/bin/cat並將mytextfile.txt顯示給終端。

要運行不在可執行文件搜索路徑中的任何其他命令,要求您限定可執行文件的路徑。 因此,假設我在Mac OS X的主目錄中有一個名為MyProgram的可執行文件,它可以像這樣完全限定它:

/用戶/奧利弗/ MyProgram

如果您位於您希望執行的程序附近的位置,則可以使用部分路徑限定該名稱。 例如,如果MyProgram位於/Users/oliver/MyProject目錄中,並且我位於我的主目錄中,則可以像這樣限定可執行文件的名稱,並執行它:

MyProject的/ MyProgram

或者說我在目錄/Users/oliver/MyProject2並且我想執行/Users/oliver/MyProject/MyProgram我可以使用這樣的相對路徑來執行它:

../MyProject/MyProgram

同樣,如果我和MyProgram在同一個目錄中,我需要使用“當前目錄”相對路徑。 您所在的當前目錄是後跟斜杠的句點字符。 例如:

./MyProgram

要確定您當前正在使用pwd命令的目錄。

如果您通常將程序放在您希望運行的硬盤上,而不必限定其名稱。 例如,如果您的主目錄中有一個“bin”目錄,用於其他程序的常用shell腳本,則更改可執行文件搜索路徑可能是明智的。

這可以通過創建或編輯主目錄中現有的.bash_profile文件並添加行來輕鬆完成:

#!/bin/sh
export PATH=$PATH:~/bin

這裡代字符(〜)字符被用作/ Users / oliver的快捷方式。 另請注意,散列爆炸(#!)行必須是文件的第一行(如果它不存在)。 還要注意,這種技術要求您的登錄shell是bash(Mac OS X和大多數Linux發行版的默認設置)。 另外請注意,如果您希望在~/bin安裝的程序優先於系統可執行文件使用,則應按以下方式重新排序導出語句:

export PATH=~/bin:$PATH

對我來說兩個步驟:

第一:

make foo

然後:

./foo


瑞恩,我正在改變這個答案而不是評論,因為看起來我太簡短了。 在“終端”中完成所有這些。

要使用G ++編譯器,您需要執行以下操作:

  1. 導航到您存儲* .cpp文件的目錄。

    cd ~/programs/myprograms/
    (〜是你家的快捷方式,即/ Users / Ryan / programs / myprograms /,替換為你實際使用的位置。)

  2. 編譯它

    g++ input.cpp -o output.bin (output.bin可以是任何具有擴展名的東西,實際上.bin在unix上很常見。)

    如果成功,應該沒有任何回報,那沒關係 。 通常你會在失敗時獲得回報。

    但是,如果輸入ls ,則會在同一目錄中看到文件列表。 例如,您會看到其他文件夾input.cpp和output.bin

  3. 從目錄內,現在用./outbut.bin執行它


要編譯C或C ++程序,有一個通用命令:

  1. make filename

  2. ./filename

make會將你的源文件建立成一個具有相同名稱的可執行文件。 但是如果你想使用標準的方式,你可以使用gcc編譯器為c ++編譯C程序和g ++

對於C:

gcc filename.c

./a.out

對於C ++:

g++ filename.cpp

./a.out

gcc main.cpp -o main.out  
./main.out




terminal