3.2.1 UNIX環境の場合の翻訳と結合

<この項の構成>
(1) 翻訳
(2) 結合

(1) 翻訳

CUPはANSI C仕様のC言語で記述します。C言語で作成したCUPのオブジェクトファイルを作成するために,ソースプログラムを翻訳します。翻訳はccコマンドで実行します。

翻訳時に必須となるオプションを次の表に示します。

表3-2 翻訳時の必須オプション(HI-UX/WE2,HP-UX,およびWindows環境以外の場合)

クライアント機能オプションオプションの意味
TP1/Client/W-AaANSI C仕様で翻訳します。

ソースプログラムを翻訳するときのコマンド入力例を次に示します。

〈例〉
C言語で作成したCUPのソースプログラム名
  • cupmain.c(メイン関数)
  • cupfnc1.c(内部関数1)
  • cupfnc2.c(内部関数2)
この場合,それぞれのソースプログラムは次のように翻訳します。

cc -c -I/usr/include -Aa cupmain.c
cc -c -I/usr/include -Aa cupfnc1.c
cc -c -I/usr/include -Aa cupfnc2.c

マルチスレッド対応の_s付き関数を使用している場合は,次のように翻訳します。

xlc_r -c cupmain.c
xlc_r -c cupfnc1.c
xlc_r -c cupfnc2.c

上記ccコマンドを実行すると,次のオブジェクトファイルが作成されます。
  • cupmain.o(メイン関数のオブジェクトファイル)
  • cupfnc1.o(内部関数1のオブジェクトファイル)
  • cupfnc2.o(内部関数2のオブジェクトファイル)

(2) 結合

CUPの実行形式ファイルは,次に示すファイルを結合させて作成します。結合はccコマンドで実行します。

上記のファイルを結合するときのコマンドの入力例を次に示します。

〈例〉
CUPの実行形式ファイル「example」を作成する場合
  • メイン関数のオブジェクトファイル名…cupmain.o
  • 内部関数のオブジェクトファイル名…cupfnc1.o,cupfnc2.o
この場合,次のようにファイルを結合します。

cc -o example cupmain.o cupfnc1.o cupfnc2.o -L/usr/lib -lclt

マルチスレッド対応のCUPを作成する場合,次のように結合します。

xlc_r -o example cupmain.o cupfnc1.o cupfnc2.o -L/usr/lib -lclt

-Lオプションの指定は省略できます。