[Prev][Next][Index]

C 言語のコンパイル、実行について教えて下さい。



[Q]
C 言語のコンパイラ、コンパイルオプション、実行について教えて下さい。

[A]

■ C 言語の場合

C プログラムを実行させるには、エディタ( emacs)を用いてソースプログラム (拡張子は".c" )を作成します。コンパイルしてオブジェクトファイルを作成し、他 のオブジェクトファイルやライブラリ(標準関数) などとリンクして実行ファイルを 作成しなければなりません。

  1. コンパイラについて
    samle.c をコンパイルするときは下記のようにします。コンパイルとリンクが自動的に 行われます。
    > cc sample.c

    この場合はデフォルトの実行ファイル a.out が作成され、UNIX では sample.exe は作成されません。希望する実行ファイル名がある場合は、-o オプションで実行 ファイル名(samp)を指定します。
    > cc -o samp sample.c

  2. gcc のコンパイラ、コンパイルオプションについて
    Linux やFreeBSD には「GNU C」という最新の無料コンパイラ GCC (GNU Compiler Collection) が付属しています。

    1. GCC でコンパイルする場合は、下記ようにします。
      > gcc -c sample.c

    2. 希望する実行ファイル名がある場合は、-o オプションで実行 ファイル名(samp)を指定します。
      > gcc -o samp sample.c

    3. 指定したライブラリのリンクを行う場合は、「-l」(小文字のエル)オプション の後にリンクしたいライブラリ「lib***.so」のうち「lib」とピリオド以下を 削除した部分を指定することでリンクできます。

      例えば、libccc20.so をリンクする場合、「-lccc20 」と記述して下さい。「l」とライブラリ名 の間にはスペースは入れません。

  3. 実行
    コンパイルに成功するとデフォルトでは、カレントディレクトリに a.out という 名前のファイルが作成されます。

    1. パスを確認する。
      > echo $path

    2. カレントディレクトリに path が通っていれば下記のように実行できます。
      > a.out ( 実行ファイル名を指定しない場合 )
      > samp ( -o オプションで実行ファイル名を指定した場合 )

    stex (物理学実験の計算機)では、カレントディレクトリに path は通していません。下記の ように実行して下さい。
    > ./a.out ( 実行ファイル名を指定しない場合 )
    > ./samp ( -o オプションで実行ファイル名を指定した場合 )

    (注意)
    インターネットに接続された計算機では、セキュリティホールになります。 stex (物理学実験の計算機)では、カレントディレクトリに path は通していません。


■ C++ 言語の場合

C++ 言語の場合は、統一された拡張子が定まらず、いくつかの名前が混用されています。ここ では、".cpp" とします。

  1. コンパイル
    > c++ sample.cpp  ( 実行ファイル名を指定しない場合 )
    > c++ -o samp sample.cpp ( -o オプションで実行ファイル名を指定した場合 )

  2. GNU C++ コンパイラの場合
    > g++ sample.cpp
    > g++ -o samp sample.cpp

  3. 実行
    > ./a.out ( 実行ファイル名を指定しない場合 )
    > ./samp ( -o オプションで実行ファイル名を指定した場合 )