OCI からダウンロードした TAO 1.6a を AIX 5.3 でビルドしました。無事に建てられました。ただし、$ACE_ROOT/lib には .so ファイルしか表示されませんでした。.a ファイルを取得するためにビルドする方法は? 1.5a バージョンをビルドしたところ、.a ファイルが作成されました。メイクフラグはありますか?サンプルをください。
ありがとうございました。
OCI からダウンロードした TAO 1.6a を AIX 5.3 でビルドしました。無事に建てられました。ただし、$ACE_ROOT/lib には .so ファイルしか表示されませんでした。.a ファイルを取得するためにビルドする方法は? 1.5a バージョンをビルドしたところ、.a ファイルが作成されました。メイクフラグはありますか?サンプルをください。
ありがとうございました。
TAO1.5 以前のバージョンでは、ライブラリごとに .a (アーカイブ ライブラリ ファイル) が生成されます。例えば:libTAO.a, libTAO_CosNaming.a, libTAO_PortableServer.a, libTAO_AnyTypeCode.a
すべてのライブラリがアーカイブ ファイル内に配置される理由は、ライブラリ名がデフォルトと同じ"shr.o"
.
実際には、すべてのライブラリ名は同じですが、アーカイブ名だけが異なります。
例えば:
Archive Name Library Name
------------ ------------
libTAO.a shr.o
libTAO_CosNaming.a shr.o
libTAO_PortableServer.a shr.o
libTAO_AnyTypeCode.a shr.o
ただし、TAO1.6 以降のバージョンでは、別の名前のライブラリが生成されます。例えば:libTAO.so, libTAO_CosNaming.so, libTAO_PortableServer.so, libTAO_AnyTypeCode.so
また、これらのライブラリはアーカイブ ファイル (.a) 内には配置されません。そのため、内部に「.a」ファイルが見つかりません$ACE_ROOT/lib
。
すべてのライブラリの .a ファイルを作成する場合は、次の手順を実行してください。もっと簡単な方法があるかどうかはわかりません。もしそうなら、ここで共有してください。
では$ACE_ROOT/lib
、すべての .so ファイルが元のプロジェクト ディレクトリからシンボリック リンクされています。
だから、どこから見つけてください。例として行いlibACE.so
ます。
$cd ACE_ROOT/lib
$ls -lrt libACE.so
--> libACE.so -> ../ace/libACE.so.5.6a_p13
さて、ファイルのソースがわかったので、そこに移動します。
$cd ../ace
.a ファイルを作成し、その中にソースを入れます。使用法 - 「ar -rv archivelibname.a sourcelibname」
$ar -rv libACE.a libACE.so.5.6a_p13
$ACE_ROOT に戻り、.a ファイルをシンボリック リンクします。
$cd $ACE_ROOT/lib
$ln -sf ../ace/libACE.a libACE.a
それで全部です。ただし、すべてのライブラリに対してこれらの手順を実行する必要があり、面倒です。
編集:私は知りませんでした -brtl
-brtl パラメータを使用してプロジェクトをコンパイルすると、.so ライブラリで適切に動作します。