Unix コンソールまたは Mac ターミナルで C または C++ コードをコンパイル/実行するにはどうすればよいですか?
19 に答える
単純な単一ソースプログラムの場合、
make foo
ソースファイルがfoo.c、foo.cppなどである場合、makefileも必要ありません。Makeには、ソースファイルを同じ名前の実行可能ファイル(拡張子を除いたもの)にビルドするのに十分な組み込みルールがあります。
ビルドしたばかりの実行可能ファイルを実行することは、他のプログラムを実行することと同じですが、シェルは実行$PATH
可能ファイルを見つけるために含まれているものだけを検索し、ほとんどの場合、現在のディレクトリを含まないため、実行可能ファイルへのパスを指定する必要があります(.
)。
したがって、ビルドされた実行可能ファイルを実行するにはfoo
:
./foo
gcc main.cpp -o main.out
./main.out
これは、すべての Unix マシンで機能するコマンドです... Linux/Ubuntu でも使用しますが、OS X でも機能します。Terminal.appに次のコマンドを入力します。
g++ -o lab21 iterative.cpp
-o
ゼロではなく文字 O です
lab21
実行可能ファイルになります
iterative.cpp
あなたのC++ファイルです
そのコマンドを実行した後、ターミナルで次のように入力してプログラムを実行します。
./lab21
私にとっての2つのステップ:
初め:
make foo
それで:
./foo
Unix (Linux、Mac OS X、AIX など) 環境でのすべてのアプリケーションの実行は、実行可能な検索パスに依存します。
次のコマンドを使用して、ターミナルでこのパスを表示できます。
エコー $PATH
Mac OS X (デフォルト) では、次のコロンで区切られた検索パスが表示されます。
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
したがって、リストされたディレクトリ内の実行可能ファイルは、名前を入力するだけで実行できます。例えば:
猫 mytextfile.txt
これが実行/bin/cat
され、端末に mytextfile.txt が表示されます。
実行可能ファイルの検索パスにないその他のコマンドを実行するには、実行可能ファイルへのパスを修飾する必要があります。たとえば、Mac OS XI のホーム ディレクトリに MyProgram という実行可能ファイルがあったとしたら、次のように完全に修飾できます。
/ユーザー/オリバー/マイプログラム
実行したいプログラムに近い場所にいる場合は、名前を部分パスで修飾できます。たとえばMyProgram
、ディレクトリ/Users/oliver/MyProject
I にいて、ホーム ディレクトリにいた場合、次のように実行可能ファイル名を修飾して、実行させることができます。
マイプロジェクト/マイプログラム
または、ディレクトリ/Users/oliver/MyProject2
にいて、実行したかったとし/Users/oliver/MyProject/MyProgram
ます。次のような相対パスを使用して実行できます。
../マイプロジェクト/マイプログラム
MyProgram
同様に、「現在のディレクトリ」の相対パスを使用する必要があるのと同じディレクトリにいる場合。現在のディレクトリは、ピリオド文字の後にスラッシュが続きます。例えば:
./マイプログラム
現在どのディレクトリにいるかを確認するには、pwd
コマンドを使用します。
通常、名前を修飾せずに実行したいプログラムをハードディスク上の場所に置く場合。たとえば、ホーム ディレクトリに、他のプログラムで定期的に使用されるシェル スクリプト用の「bin」ディレクトリがある場合、実行可能ファイルの検索パスを変更するのが賢明な場合があります。
.bash_profile
これは、ホーム ディレクトリにある既存のファイルを作成または編集し、次の行を追加することで簡単に実行できます。
#!/bin/sh
export PATH=$PATH:~/bin
ここでは、チルダ (~) 文字が /Users/oliver のショートカットとして使用されています。また、ハッシュ バン (#!) 行がファイルの最初の行である必要があることに注意してください (まだ存在しない場合)。また、この手法ではログイン シェルが bash である必要があることにも注意してください (Mac OS X およびほとんどの Linux ディストリビューションのデフォルト)。また、インストールされているプログラム~/bin
をシステム実行可能ファイルに優先して使用する場合は、次のように export ステートメントを並べ替える必要があることに注意してください。
export PATH=~/bin:$PATH
これらはすべて「ターミナル」で行います。
G++ コンパイラを使用するには、次のようにする必要があります。
*.cpp ファイルを保存したディレクトリに移動します。
cd ~/programs/myprograms/
( ~ はホームへのショートカット、つまり /Users/Ryan/programs/myprograms/ で、実際に使用した場所に置き換えてください。)コンパイルする
g++ input.cpp -o output.bin
( output.binは、実際には任意の拡張子を持つものにすることができます。拡張子 .bin は、Unix では一般的です。)成功した場合は何も返されないはずです。それで問題ありません。通常、失敗すると返品が発生します。
ただし、 と入力
ls
すると、同じディレクトリ内のファイルのリストが表示されます。たとえば、他のフォルダー、input.cppおよびoutput.binが表示されます。ディレクトリ内から、次のように実行します
./outbut.bin
それを行うためのコンパクトな方法は次のとおりです。
make foo && ./$_
実行可能ファイルを簡単に再実行できるように、ワンライナーがあると便利です。
現在のディレクトリがパスにないと仮定すると、構文は./[name of the program]
.
例えば./a.out
以下を追加して、最良の警告を取得してください。後悔することはありません。可能であれば、WISE を使用してコンパイルします (警告はエラーです)。
- Wall -pedantic -Weffc++ -Werror
道順のあるこのリンクを見つけました:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
基本的にあなたは:
gcc hello.c
./a.out (or with the output file of the first command)
を使用しmakefile
ます。非常に小さな (= 1 ファイルの) プロジェクトであっても、テストするためのコンパイラ設定のセットをいくつか持つことができるため、その努力はおそらく価値があります。このようにすると、デバッグと展開がはるかに簡単になります。
make
マニュアルを読んでください。一見、かなり長いように見えますが、ほとんどのセクションはスキップして読み飛ばすことができます。全体として、数時間かかり、生産性が大幅に向上しました。
ターミナルを使用して .C ファイルを実行するには、2 段階のプロセスがあります。最初のステップは、端末に gcc と入力し、.C ファイルを端末にドロップしてから、次のように押しEnterます。
gcc /Desktop/test.c
2 番目のステップで、次のコマンドを実行します。
~/a.out
C++ ファイルを実行するには、ファイル名が「main.cpp」であると仮定して、次のコマンドを実行します。
C++ファイルからオブジェクトファイルを作成するためにコンパイルします。
g++ -c main.cpp -o main.o
#include <conio.h>
macOS ではサポートされていないため、Mac でサポートされている代替手段を使用する必要があります。それは#include <curses.h>
です。ここで、オブジェクト ファイルを実行可能ファイルに変換する必要があります。ファイルcurses.hを使用するには、ライブラリを使用する必要があります-lcurses
。g++ -o main main.o -lcurses
実行可能ファイルを実行します。
./main