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

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

5.1.4.1 静的リンクする場合のコンパイル・リンク

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

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

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

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

アプリケーションによっては、SQL文を使用しないコンパイル単が存在する場合があります。SQL文を使用しないコンパイル単位は、ccコマンド、gccコマンド、fccコマンドまたはcobolコマンドを使用してコンパイル・リンクを行います。

また、ロードモジュールを静的リンクして作成するには、副プログラムのオブジェクトファイルを作成し、主プログラムに静的にリンクする必要があります。

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

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

コンパイル対象の性質

指定するオプション

備考

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

主プログラム

副プログラムのオブジェクトファイル名

リンクする副プログラム

-M

COBOLの場合に指定

副プログラム

-c

オブジェクトファイルの作成

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

主プログラム

副プログラムのオブジェクトファイル名

リンクする副プログラム

-M

COBOLの場合に指定

-L/opt/FSUNrdb2b/lib

RDBライブラリパス指定

-L/opt/FJSVrdb2b/lib

RDBライブラリパス指定

-lsqldrvm

RDBライブラリ名(32ビットでかつ、マルチスレッドで動作するアプリケーションを静的リンクする場合に使用)

-lsqldrv

RDBライブラリ名(32ビットで実行するアプリケーションを静的リンクする場合に使用)

-lsql64drvm

RDBライブラリ名(64ビットでかつ、マルチスレッドで実行するアプリケーションを静的リンクする場合に使用)

-lsql64drv

RDBライブラリ名(64ビットで実行するアプリケーションを静的リンクする場合に使用)

副プログラム

-c

オブジェクトファイルの作成

■C言語使用時の例

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

例1

SQL文を使用する主プログラム(demo04main.sc)と、SQL文を使用する2個の副プログラム(demo04sub1.sc、demo04sub2.sc)を静的リンクします。ロードモジュール名は“demo04”とします。
cd /home/rdb2/application/src 
sqlcc demo04sub1.sc -c
sqlcc demo04sub2.sc -c
sqlcc demo04main.sc -o ../bin/demo04 demo04sub1.o  demo04sub2.o    

 

例2

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

なお、Linuxの場合は、Lオプションに指定するパス名を読み替えてください。

cd /home/rdb2/application/src
sqlcc demo05sub1.sc -c
cc -c demo05sub2.c
cc -o ../bin/demo05 -L/opt/FSUNrdb2b/lib -lsqldrv demo05main.c demo05sub1.o demo05sub2.o

 

例3

64ビットで実行するアプリケーションを静的リンクす場合の例を示します。SQL文を使用しない主プログラム(demo08main.c)と、SQL文を使用する副プログラム(demo08sub1.sc)、およびSQL文を使用しない副プログラム(demo08sub2.c)を静的リンクします。ロードモジュール名は“demo08”とします。
cd /home/rdb2/application/src
sqlcc -v9 demo08sub1.sc -c
cc -xarch=v9 -c demo08sub2.c
cc -xarch=v9 -o ../bin/demo08 -L/opt/FSUNrdb2b/lib -lsql64drv demo08main.c  demo08sub1.o demo08sub2.o

例4

64ビットで実行するアプリケーションを静的リンクする場合の例を示します。SQL文を使用しない主プログラム(demo09main.c)と、SQL文を使用する副プログラム(demo09sub1.sc)、およびSQL文を使用しない副プログラム(demo09sub2.c)を静的リンクします。ロードモジュール名は“demo08”とします。
cd /home/rdb2/application/src
sqlcc -v9 demo09sub1.sc -c
cc -c demo09sub2.c
cc -o ../bin/demo09 -L/opt/FJSVrdb2b/lib -lsql64drv demo09main.c  demo09sub1.o demo09sub2.o

■COBOL使用時の例

例1

SQL文を使用する主プログラム(demo06main.scob)と、SQL文を使用する2個の副プログラム(demo06sub1.scob、demo06sub2.scob)を静的リンクします。ロードモジュール名は“demo06”とします。
cd /home/rdb2/application/src
sqlcobol demo06sub1.scob -c
sqlcobol demo06sub2.scob -c
sqlcobol demo06main.scob -M -o ../bin/demo06 demo06sub1.o demo06sub2.o

 

例2

SQL文を使用しない主プログラム(demo07main.cobol)と、SQL文を使用する副プログラム(demo07sub1.scob)、およびSQL文を使用しない副プログラム(demo07sub2.cobol)を静的リンクします。ロードモジュール名は“demo07”とします。
cd /home/rdb2/application/src
sqlcobol demo07sub1.scob -c
cobol -c demo07sub2.cobol
cobol -M -o ../bin/demo07 -L/opt/FSUNrdb2b/lib -lsqldrv demo07main.cobol demo07sub1.o demo07sub2.o

例3

64ビットで実行するアプリケーションを静的リンクする場合の例を示します。SQL文を使用しない主プログラム(demo08main.cobol)と、SQL文を使用する副プログラム(demo08sub1.scob)、およびSQL文を使用しない副プログラム(demo08sub2.cobol)を静的リンクします。ロードモジュール名は“demo08”とします。
cd /home/rdb2/application/src
sqlcobol -v9 demo08sub1.scob -c
cobol -c demo08sub2.cobol
cobol -M -o ../bin/demo08 -L/opt/FJSVrdb2b/lib -lsql64drv demo08main.cobol demo08sub1.o demo08sub2.o

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

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