0

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.

Lwin Htoo Ko
  • 2,326
  • 4
  • 26
  • 38

1 Answers1

0

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.

Lwin Htoo Ko
  • 2,326
  • 4
  • 26
  • 38
  • The 1.6a version is pretty old, use TAO 2.1.3 and the tao-users mailing list is a much better place to ask than here on stackoverflow – Johnny Willemsen Aug 02 '12 at 17:34
  • On AIX theres no difference from .so and .a. Just convention. http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Fgetstart%2Foverview%2Fport_aix_obj_lib.htm – CoreyStup Aug 02 '12 at 19:04
  • 1
    @CoreyStup Ah, sorry, I totally didn't read the AIX part of the question. – Brian Neal Aug 03 '12 at 00:34
  • @JohnnyWillemsen I downloaded from www.theaceorb.com. I downloaded patch 13 which was released on 06-Jan-2012. So, I think it is not very old. – Lwin Htoo Ko Aug 03 '12 at 01:36
  • The patch is not old, but the original version is old and a lot has been improved in the full open source versio of TAO. Get the 2.1.3 version from http://download.dre.vanderbilt.edu, that is really much more stable and tested – Johnny Willemsen Aug 04 '12 at 18:14
  • Interesting article - https://groups.google.com/forum/?fromgroups#!search/TAO$20%2811095$7C1%29$20ERROR:$20ORBInitializer$20Registry$20unable$20to$20find$20the$20ORBInitializer$20Registry$20instance:$20Invalid$20argument/comp.soft-sys.ace/3DN072k0T58/xUowHcvwzOkJ – Lwin Htoo Ko Aug 07 '12 at 09:39