Reputation: 2406
I built TAO 1.6a downloaded from OCI in AIX 5.3. I was built successfully. However, I could only see .so files in $ACE_ROOT/lib. How to build it to get .a files? I have built 1.5a version and it gave me .a files. Is there any make flag? Please give ma sample.
Thank you.
Upvotes: 0
Views: 612
Reputation: 2406
TAO1.5 and older versions produce .a (archive library file) for each library.
For example: libTAO.a, libTAO_CosNaming.a, libTAO_PortableServer.a, libTAO_AnyTypeCode.a
I think why all libraries are put inside archive files is that the library names are the same as default, "shr.o"
.
The fact is all library names are the same but only the archive names are different.
For example:
Archive Name Library Name
------------ ------------
libTAO.a shr.o
libTAO_CosNaming.a shr.o
libTAO_PortableServer.a shr.o
libTAO_AnyTypeCode.a shr.o
But, TAO1.6 and newer versions produces libraries with different names.
For example: libTAO.so, libTAO_CosNaming.so, libTAO_PortableServer.so, libTAO_AnyTypeCode.so
And, those libraries are not put inside archive files (.a). That is why I cannot find ".a" files inside $ACE_ROOT/lib
.
If you want to create .a files for all libraries, please do the following steps. I don't know if there are more easier ways out there. If so, please share here.
In $ACE_ROOT/lib
, all .so files are symbolic linked from their original project directories.
So, find out from where. I will do libACE.so
as example.
$cd ACE_ROOT/lib
$ls -lrt libACE.so
--> libACE.so -> ../ace/libACE.so.5.6a_p13
ok, now, I know the source of the file and will go there.
$cd ../ace
create .a file and put the source inside it. usage - "ar -rv archivelibname.a sourcelibname"
$ar -rv libACE.a libACE.so.5.6a_p13
and go back to $ACE_ROOT and symbolic link the .a file
$cd $ACE_ROOT/lib
$ln -sf ../ace/libACE.a libACE.a
That's all. But, you have to do those steps for all libraries and it is tiring.
Edit: I just did not know -brtl
Compile projects using -brtl parameter and they will work well with .so libraries.
Upvotes: 0