我在AIX 5.3中构建了从OCI下载的TAO 1.6a。我是成功建造的。但是,我只能在$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)中。这就是为什么我在$ACE_ROOT/lib
中找不到".a"文件的原因。
如果要为所有库创建.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
创建一个文件,并将源代码放入其中。用法-"ar-rv archivelibname.asourcelibname"
$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库配合使用。