TAO 1.6a - How to make .a libraries?

588 views Asked by At

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.

1

There are 1 answers

6
Lwin Htoo Ko On BEST ANSWER

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.