Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU -
目次 索引 前ページ次ページ

第5章 アプリケーションのコンパイル・リンク> 5.1 UNIX系を使用した場合のアプリケーションのコンパイル・リンク> 5.1.4 複数のコンパイル単位から構成されるアプリケーションのコンパイル・リンクの方法

5.1.4.2 動的リンクする場合のコンパイル・リンク

複数のコンパイル単を動的リンクする場合のコンパイル・リンクの方法を以下に示します。

[図:複数のコンパイル単位を動的リンクする場合のコンパイル・リンクの方法]

SQL文を使用するコンパイル単は、sqlcc、sqlfccまたはsqlcobolを使用してコンパイル・リンクを行います。

sqlcc、sqlfccおよびsqlcobolのオプションの指定方法については、“コマンドリファレンス”を参照してください。

アプリケーションによっては、SQL文を使用しないコンパイル単位が存在する場合があります。

SQL文を使用しないコンパイル単は、ccコマンド、gccコマンド、fccコマンドまたはcobolコマンドを使用してコンパイル・リンクを行います。

また、ロードモジュールを動的リンクして作成するためには、副プログラムは共用ライブラリにロードモジュールとして作成し、主プログラムのコンパイル・リンク時にリンクする副プログラムのロードモジュール名を指定する必要があります。

アプリケーションを動的リンクする場合に必要なオプションを以下に示します。

[表: アプリケーションを動的リンクする場合に必要なオプショ]

コンパイル対象の性質

指定するオプション

備考

SQL文を含むコンパイル単位

主プログラム

-l 副プログラムのロードモジュール名

リンクする副プログラム

-M

COBOLの場合に指定

副プログラム

-KPIC

C言語で共有ライブラリを作成する場合に指定

-G

動的リンクの指定

-fPIC

C言語で共有ライブラリを作成する場合に指定

-shared

動的リンクの指定

SQL文を含まないコンパイル単位

主プログラム

-l 副プログラムのロードモジュール名

リンクする副プログラム

-M

COBOLの場合に指定

副プログラム

-KPIC

C言語で共有ライブラリを作成する場合に指定

-G

動的リンクの指定

-fPIC

C言語で共有ライブラリを作成する場合に指定

-shared

動的リンクの指定

■C言語使用時の例

以下の例において、sqlfccを利用する場合は、sqlccをsqlfccに、またccをfccに置き換えたものになります。

例1

SQL文を使用する主プログラム(demo10main.sc)と、SQL文を使用する2個の副プログラム(libsub1.sc、libsub2.sc)を動的リンクします。ロードモジュール名は、副プログラムを“libsub1.so”および“libsub2.so”、主プログラムを“demo10main”とします。

なお、Linuxの場合は、KPICオプションとGオプションの代わりにfPICオプションとsharedオプションを指定します。

cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcc libsub1.sc  -KPIC -G -o ../lib/libsub1.so
sqlcc libsub2.sc -KPIC -G -o ../lib/libsub2.so
sqlcc demo10main.sc -o ../bin/demo10main -lsub1 -lsub2

 

例2

SQL文を使用しない主プログラム(demo11main.c)と、SQL文を使用する副プログラム(libsub3.sc)、およびSQL文を使用しない副プログラム(libsub4.c)を動的リンクします。ロードモジュール名は、副プログラムを“libsub3.so”および“libsub4.so”、主プログラムを“demo11main”とします。

なお、Linuxの場合は、KPICオプションとGオプションの代わりにfPICオプションとsharedオプションを指定します。

cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcc libsub3.sc -KPIC -G -o ../lib/libsub3.so
cc -KPIC -G -o ../lib/libsub4.so libsub4.c
cc -o ../bin/demo11main demo11main.c -lsub3 -lsub4

 

例3

64ビットで実行するアプリケーションを動的リンクす場合の例を示します。SQL文を使用する主プログラム(demo09main.sc)と、SQL文を使用する2個の副プログラム(libsub11.sc、libsub12.sc)を動的リンクします。ロードモジュール名は、副プログラムを“libsub11.so”および“libsub12.so”、主プログラムを“demo09main”とします。

なお、Linuxの場合は、KPICオプションとGオプションの代わりにfPICオプションとsharedオプションを指定します。

cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH_64 /home/rdb2/application/lib:$LD_LIBRARY_PATH_64
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcc -v9 libsub11.sc -KPIC -G -o ../lib/libsub11.so
sqlcc -v9 libsub12.sc -KPIC -G -o ../lib/libsub12.so
sqlcc -v9 demo09main.sc -o ../bin/demo09main -lsub11 -lsub12

 

例4

64ビットで実行するアプリケーションを動的リンクす場合の例を示します。SQL文を使用する主プログラム(demo09main.sc)と、SQL文を使用する2個の副プログラム(libsub11.sc、libsub12.sc)を動的リンクします。ロードモジュール名は、副プログラムを“libsub11.so”および“libsub12.so”、主プログラムを“demo09main”とします。
cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcc -v9 libsub11.sc -fPIC -shared -o ../lib/libsub11.so
sqlcc -v9 libsub12.sc -fPIC -shared -o ../lib/libsub12.so
sqlcc -v9 demo09main.sc -o ../bin/demo09main -lsub11 -lsub12

■COBOL使用時の例

例1

SQL文を使用する主プログラム(demo12main.scob)と、SQL文を使用する2個の副プログラム(libsub5.scob、libsub6.scob)を動的リンクします。ロードモジュール名は、副プログラムを“libsub5.so”および“libsub6.so”、主プログラムを“demo12main”とします。
cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcobol libsub5.scob -G -o ../lib/libsub5.so
sqlcobol libsub6.scob -G -o ../lib/libsub6.so
sqlcobol demo12main.scob -M -o ../bin/demo12main -lsub5 -lsub6

 

例2

SQL文を使用しない主プログラム(demo13main.cobol)と、SQL文を使用する副プログラム(libsub7.scob)、およびSQL文を使用しない副プログラム(libsub8.cobol)を動的リンクします。ロードモジュール名は、副プログラムを“libsub7.so”および“libsub8.so”、主プログラムを“demo13main”とします。
cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcobol libsub7.scob -G -o ../lib/libsub7.so
cobol -G -o ../lib/libsub8.so libsub8.cobo
cobol -M -o ../bin/demo13main -lsub7 -lsub8 demo13main.cobol

例3

64ビットで実行するアプリケーションを動的リンクする場合の例を示します。SQL文を使用する主プログラム(demo14main.scob)と、SQL文を使用する2個の副プログラム(libsub11.scob、libsub12.scob)を動的リンクします。ロードモジュール名は、副プログラムを“libsub11.so”および“libsub12.so”、主プログラムを“demo14main”とします。
cd /home/rdb2/application/src
setenv LD_LIBRARY_PATH /home/rdb2/application/lib:$LD_LIBRARY_PATH
sqlcobol -v9 libsub11.scob -G -o ../lib/libsub11.so
sqlcobol -v9 libsub12.scob -G -o ../lib/libsub12.so
sqlcobol -v9 demo14main.scob -M -o ../bin/demo14main -lsub11 -lsub12

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007-2008