我在AIX5.3中从OCI下载构建了TAO1.6a。我被成功地造出来了。但是,我只能在$ACE_ROOT/lib中看到.so文件。如何构建它来获取.a文件?我已经构建了1.5a版本,它给了我.a文件。有make标志吗?请给我样品。
谢谢。
发布于 2012-08-02 14:12:06
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创建.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库一起很好地工作。
https://stackoverflow.com/questions/11770540
复制相似问题