[Prev][Next][Index]
C 言語のコンパイル、実行について教えて下さい。
[Q]
C 言語のコンパイラ、コンパイルオプション、実行について教えて下さい。
[A]
■ C 言語の場合
C プログラムを実行させるには、エディタ( emacs)を用いてソースプログラム
(拡張子は".c" )を作成します。コンパイルしてオブジェクトファイルを作成し、他
のオブジェクトファイルやライブラリ(標準関数) などとリンクして実行ファイルを
作成しなければなりません。
- コンパイラについて
samle.c をコンパイルするときは下記のようにします。コンパイルとリンクが自動的に
行われます。
> cc sample.c
この場合はデフォルトの実行ファイル a.out が作成され、UNIX では sample.exe
は作成されません。希望する実行ファイル名がある場合は、-o オプションで実行
ファイル名(samp)を指定します。
> cc -o samp sample.c
- gcc のコンパイラ、コンパイルオプションについて
Linux やFreeBSD には「GNU C」という最新の無料コンパイラ GCC (GNU Compiler Collection)
が付属しています。
- GCC でコンパイルする場合は、下記ようにします。
> gcc -c sample.c
- 希望する実行ファイル名がある場合は、-o オプションで実行
ファイル名(samp)を指定します。
> gcc -o samp sample.c
- 指定したライブラリのリンクを行う場合は、「-l」(小文字のエル)オプション
の後にリンクしたいライブラリ「lib***.so」のうち「lib」とピリオド以下を
削除した部分を指定することでリンクできます。
例えば、libccc20.so をリンクする場合、「-lccc20 」と記述して下さい。「l」とライブラリ名
の間にはスペースは入れません。
- 実行
コンパイルに成功するとデフォルトでは、カレントディレクトリに a.out という
名前のファイルが作成されます。
- パスを確認する。
> echo $path
- カレントディレクトリに path が通っていれば下記のように実行できます。
> a.out ( 実行ファイル名を指定しない場合 )
> samp ( -o オプションで実行ファイル名を指定した場合 )
stex (物理学実験の計算機)では、カレントディレクトリに path は通していません。下記の
ように実行して下さい。
> ./a.out ( 実行ファイル名を指定しない場合 )
> ./samp ( -o オプションで実行ファイル名を指定した場合 )
(注意)
インターネットに接続された計算機では、セキュリティホールになります。
stex (物理学実験の計算機)では、カレントディレクトリに path は通していません。
■ C++ 言語の場合
C++ 言語の場合は、統一された拡張子が定まらず、いくつかの名前が混用されています。ここ
では、".cpp" とします。
- コンパイル
> c++ sample.cpp ( 実行ファイル名を指定しない場合 )
> c++ -o samp sample.cpp ( -o オプションで実行ファイル名を指定した場合 )
- GNU C++ コンパイラの場合
> g++ sample.cpp
> g++ -o samp sample.cpp
- 実行
> ./a.out ( 実行ファイル名を指定しない場合 )
> ./samp ( -o オプションで実行ファイル名を指定した場合 )