161

Unix コンソールまたは Mac ターミナルで C または C++ コードをコンパイル/実行するにはどうすればよいですか?

4

19 に答える 19

220

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

make foo

ソースファイルがfoo.cfoo.cppなどである場合、makefileも必要ありません。Makeには、ソースファイルを同じ名前の実行可能ファイル(拡張子を除いたもの)にビルドするのに十分な組み込みルールがあります。

ビルドしたばかりの実行可能ファイルを実行することは、他のプログラムを実行することと同じですが、シェルは実行$PATH可能ファイルを見つけるために含まれているものだけを検索し、ほとんどの場合、現在のディレクトリを含まないため、実行可能ファイルへのパスを指定する必要があります(.)。

したがって、ビルドされた実行可能ファイルを実行するにはfoo

./foo
于 2008-10-21T09:10:24.793 に答える
124
gcc main.cpp -o main.out
./main.out
于 2008-10-21T08:46:38.930 に答える
74

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

g++ -o lab21 iterative.cpp

-oゼロではなく文字 O です

lab21実行可能ファイルになります

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

そのコマンドを実行した後、ターミナルで次のように入力してプログラムを実行します。

./lab21
于 2011-02-24T18:02:03.813 に答える
34

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

初め:

make foo

それで:

./foo
于 2014-07-28T11:52:50.720 に答える
15

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/MyProjectI にいて、ホーム ディレクトリにいた場合、次のように実行可能ファイル名を修飾して、実行させることができます。

マイプロジェクト/マイプログラム

または、ディレクトリ/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
于 2008-10-22T07:51:33.080 に答える
11

これらはすべて「ターミナル」で行います。

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

于 2012-12-04T23:38:28.900 に答える
10

それを行うためのコンパクトな方法は次のとおりです。

make foo && ./$_

実行可能ファイルを簡単に再実行できるように、ワンライナーがあると便利です。

于 2015-01-14T04:07:36.243 に答える
8

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

例えば./a.out

于 2008-10-21T08:45:46.373 に答える
7

以下を追加して、最良の警告を取得してください。後悔することはありません。可能であれば、WISE を使用してコンパイルします (警告はエラーです)。

- Wall -pedantic -Weffc++ -Werror
于 2008-10-21T08:52:01.697 に答える
2

道順のあるこのリンクを見つけました:

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)
于 2011-12-22T18:40:40.010 に答える
2

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

makeマニュアルを読んでください。一見、かなり長いように見えますが、ほとんどのセクションはスキップして読み飛ばすことができます。全体として、数時間かかり、生産性が大幅に向上しました。

于 2008-10-21T08:58:47.393 に答える
0

ターミナルを使用して .C ファイルを実行するには、2 段階のプロセスがあります。最初のステップは、端末に gcc と入力し、.C ファイルを端末にドロップしてから、次のように押しEnterます。

gcc /Desktop/test.c

2 番目のステップで、次のコマンドを実行します。

~/a.out
于 2016-08-23T07:06:31.593 に答える
0

C++ ファイルを実行するには、ファイル名が「main.cpp」であると仮定して、次のコマンドを実行します。

  1. C++ファイルからオブジェクトファイルを作成するためにコンパイルします。

    g++ -c main.cpp -o main.o
    
  2. #include <conio.h>macOS ではサポートされていないため、Mac でサポートされている代替手段を使用する必要があります。それは#include <curses.h>です。ここで、オブジェクト ファイルを実行可能ファイルに変換する必要があります。ファイルcurses.hを使用するには、ライブラリを使用する必要があります-lcurses

    g++ -o main main.o -lcurses
    
  3. 実行可能ファイルを実行します。

    ./main
    
于 2020-06-05T12:33:05.187 に答える