3.2.1 UNIX環境の場合の翻訳と結合
(1) 翻訳
CUPはANSI C仕様のC言語で記述します。C言語で作成したCUPのオブジェクトファイルを作成するために,ソースプログラムを翻訳します。翻訳はCコンパイラで実行します。
AIXおよびLinuxでソースプログラムを翻訳するときのコマンド入力例を次に示します。詳細なコンパイラオプションについては,「リリースノート」を確認してください。
- 〈例〉
-
C言語で作成したCUPのソースプログラム名
-
cupmain.c(メイン関数)
-
cupfnc1.c(内部関数1)
-
cupfnc2.c(内部関数2)
この場合,それぞれのソースプログラムは次のように翻訳します。
- <AIXの場合>
xlc -c -I/usr/include cupmain.c xlc -c -I/usr/include cupfnc1.c xlc -c -I/usr/include cupfnc2.c
- <Linuxの場合>
cc -c -I/usr/include -ansi cupmain.c cc -c -I/usr/include -ansi cupfnc1.c cc -c -I/usr/include -ansi cupfnc2.c
マルチスレッド対応の_s付き関数を使用している場合は,次のように翻訳します。
- <AIXの場合>
xlc_r -c cupmain.c xlc_r -c cupfnc1.c xlc_r -c cupfnc2.c
- <Linuxの場合>
cc -c -I/usr/include -ansi -lpthread cupmain.c cc -c -I/usr/include -ansi -lpthread cupfnc1.c cc -c -I/usr/include -ansi -lpthread cupfnc2.c
上記ccコマンドを実行すると,次のオブジェクトファイルが作成されます。
-
cupmain.o(メイン関数のオブジェクトファイル)
-
cupfnc1.o(内部関数1のオブジェクトファイル)
-
cupfnc2.o(内部関数2のオブジェクトファイル)
-
(2) 結合
CUPの実行形式ファイルは,次に示すファイルを結合させて作成します。結合はccコマンドで実行します。
-
CUPのオブジェクトファイル(メイン関数と内部関数)
-
TP1/Clientのライブラリ
上記のファイルを結合するときのコマンドの入力例を次に示します。
- 〈例〉
-
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オプションの指定は省略できます。
-