0

OCI からダウンロードした TAO 1.6a を AIX 5.3 でビルドしました。無事に建てられました。ただし、$ACE_ROOT/lib には .so ファイルしか表示されませんでした。.a ファイルを取得するためにビルドする方法は? 1.5a バージョンをビルドしたところ、.a ファイルが作成されました。メイクフラグはありますか?サンプルをください。

ありがとうございました。

4

1 に答える 1

0

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 ライブラリで適切に動作します。

于 2012-08-02T06:12:05.770 に答える