web-dev-qa-db-ja.com

Unixコンソール/ Mac端末でC / C ++をコンパイルして実行する方法

UnixコンソールやMac端末でCまたはC++をコンパイルして実行するにはどうすればよいですか?

(私はそれを知っています、それを忘れて、そしてもう一度それを再学習します。それを書き留める時間です。)

126
P-A

単純な単一ソースプログラムの場合

make foo

ソースファイルはfoo.cまたはfoo.cppなどです。

あなたもメイクファイルを必要としないでください。 Makeには、ソースファイルを、拡張子を除いた同じ名前の実行可能ファイルにビルドするのに十分な組み込み規則があります。

ビルドされた実行可能ファイルを実行することは他のプログラムを実行することと同じですが、シェルは実行可能ファイルを見つけるために$PATHにあるものだけを検索するので、実行可能ファイルへのパスを指定する必要があります。 (.).

それで、構築された実行可能ファイルfooを実行するために:

./foo
169
camh
gcc main.cpp -o main.out  
./main.out
104
Andrey Neverov

これはすべてのUnixマシンで機能するコマンドです。私はLinux/Ubuntuで使用しますが、OS Xでも機能します。 Terminal.appに次のコマンドを入力します。

$ g++ -o lab21 iterative.cpp

-oは文字Oで、ゼロではありません

lab21はあなたの実行可能ファイルになります

iterative.cppはあなたのc ++ファイルです

そのコマンドを実行した後は、端末で次のように入力してプログラムを実行します。

$ ./lab21
65
Komengem

私にとって2つのステップ:

最初:

make foo

その後:

./foo
31
Victor Augusto

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という実行可能ファイルがあるとします。

/ Users/oliver/MyProgram

実行したいプログラムの近くにいる場合は、部分パスで名前を修飾できます。たとえば、MyProgramがディレクトリ/Users/oliver/MyProjectにあり、私が自分のホームディレクトリにいる場合、実行可能ファイル名を次のように修飾して実行させることができます。

MyProject/MyProgram

または、/Users/oliver/MyProject2ディレクトリにいて、/Users/oliver/MyProject/MyProgramを実行したいとします。これを実行するには、次のような相対パスを使用できます。

../MyProject/MyProgram

同様に、私が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
15
orj

Ryan、これはコメントではなく回答になるように変更しています。これらすべてを「ターミナル」で行います。

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を付けて実行します。

10
nerdwaller

現在のディレクトリがパスにないと仮定すると、構文は./[name of the program]です。

例えば./a.out

8
P-A

最良の警告を得るために以下を追加してください、あなたはそれを後悔しないでしょう。可能であれば、WISEをコンパイルしてください(警告はエラーです)

- Wall -pedantic -Weffc++ -Werror
7
Nazgob

これを実行するためのコンパクトな方法は、次のとおりです。

make foo && ./$_

ワンライナーを用意して、実行可能ファイルを簡単に再実行できるようにします。

7
markthethomas

CまたはC++プログラムをコンパイルするには、一般的なコマンドがあります。

  1. make filename

  2. ./filename

makeはあなたのソースファイルを同じ名前の実行ファイルに作ります。しかし、もしあなたが標準的な方法を使いたいのであれば、gccコンパイラを使ってCプログラムを構築することができます。

Cの場合:

gcc filename.c

./a.out

C++の場合

g++ filename.cpp

./a.out
5
Yogesh Nogia

makefileを使用してください。非常に小さい(= 1ファイル)プロジェクトの場合でも、テストするためにコンパイラー設定をいくつか設定できるので、その努力はおそらく価値があります。このようにすると、デバッグと配置がはるかに簡単になります。

make manual を読んでください、一見するとかなり長いように見えますが、ほとんどのセクションであなたは読み飛ばすことができます。全体として、それは私に数時間かかり、私をずっと生産的にしました。

2
Konrad Rudolph

私は道順とこのリンクを見つけました:

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)
2
Srini Kadamati

Mac端末からcppソースコードをコンパイルして実行するためには、次のことをする必要があります。

  1. CppファイルのパスがsomePath/fileName.cppの場合は、まずパスsomePathでディレクトリに移動します。
  2. FileName.cppをコンパイルするには、c ++ fileName.cpp -o fileNameと入力します。
  3. プログラムを実行するには、。/ fileNameと入力します。
0
Alper Gur

c/cppファイルがあるディレクトリに入るだけです。

cコードをコンパイルして実行するためのものです。

$gcc filename.c
$./a.out filename.c

c ++コードをコンパイルして実行するためのものです。

$g++ filename.cpp
$./a.out filename.cpp

"$"はデフォルトのMac端末シンボルです

0
Shiv Prakash