library versions

IRIX/Nekoware development, porting and related topics.
Forum rules
Any posts concerning pirated software or offering to buy/sell/trade commercial software are subject to removal.
User avatar
whiter
Posts: 972
Joined: Tue Apr 29, 2003 2:02 pm
Location: Winterthur, Switzerland
Contact:

library versions

Unread postby whiter » Sun May 23, 2004 6:40 am

Can somebody explain to me a few things about library versioning? I know libraries have version numbers/string somewhere, but what are they, how are they determined, and how do you use them?

For example, I was poking at audiofile and esound. While compiling audiofile I see this:

Code: Select all

/usr/bin/ld -n32 -IPA -shared openclose.o setup.o (.... lots of object files and libs ....) -lm -lc -soname libaudiofile.so.1 `test -n "sgi1.1:sgi1.0:sgi.2" && echo -set_version sgi1.1:sgi1.0:sgi.2` -update registry .libs/so_locations -o .libs/libaudiofile.so.1.2
As you can see there is a part that deals with the soname and some weird version string. (sgi1.1:sgi1.0:sgi.2)

What is it that it does there?
What does this version string mean?
How is this string determined?
How important is it?

But then when I configure esound I get:

Code: Select all

checkoung for Audio File Library - version >= 0.1.5... 19971:./conftest: rld: Warning: Version Search Suppressed in ./conftest Because version (sgi.2) of object libaudiofile.so.1 in liblist is not an sgi interface version.

Now it only shows the last part of the version string (sgi.2) and it sais it's not an sgi interface version (a what??).

I clearly need some more info here before I'll be able to debug such weird errors.

Actualy I get this error both with my own build os audiofile and with the nekoware one.
Shall I describe it to you? Or do you want me to get you a box?

User avatar
dexter1
Moderator
Moderator
Posts: 2062
Joined: Thu Feb 20, 2003 6:57 am
Location: Voorburg, The Netherlands
Contact:

Re: library versions

Unread postby dexter1 » Mon May 24, 2004 5:16 am

whiter wrote:What is it that it does there?

Apparently it sets the version string in the DSO to a specific value.
whiter wrote:What does this version string mean?

The linker will check for this IVERSION string partly to determine which SO needs this library, next to SONAME. It differs from linux, because that will determine files solely by the name, whereas SGI has some nifty string for that. Go figure :)
whiter wrote:How is this string determined?

Hopefully, the author has a specific number in mind with which it will set the version string accordingly. :)
whiter wrote:How important is it?

quite, because if you screw up this one, the version dependancies could change. IVERSION botchups i haven't seen yet in Nekoware beta to be honest, but we had similar problems with f.i. the SONAME string and zlib version in nekoware and the openssl library. Neko fixed openssl and i fixed zlib and bzip2, but there could be more lurking in the grass.

You can interrogate this version string with 'elfdump -L yourlib.so' and look for IVERSION

whiter wrote:But then when I configure esound I get:

Code: Select all

checkoung for Audio File Library - version >= 0.1.5... 19971:./conftest: rld: Warning: Version Search Suppressed in ./conftest Because version (sgi.2) of object libaudiofile.so.1 in liblist is not an sgi interface version.

Now it only shows the last part of the version string (sgi.2) and it sais it's not an sgi interface version (a what??).

Are you trying to recompile the stuff from nekoware? I am the one responsible for libaudiofile and esound, so PM me or phone me and i can have a look at it.


Return to “SGI: Development”

Who is online

Users browsing this forum: eudatux23, TeamBlackFox and 1 guest