@cha05e90
All my recent (i.e very recent) updates are with proper sonames. Proper versioning in the name of the shared object (of course, no $VER: string).
Originally I compiled shared objects to overwrite and update what we already had. libvorbis, libogg, libjpeg, libfreetype (my .so not released), libpng (again my .so not released), libjpeg, etc..
Now, to overwrite those, I needed the same filename. This was easy. "libtool" used by most configure scripts and Makefiles doesn't know what AmigaOS is and therefore strips the version numbers, and you end up with libjpeg.so instead of libjpeg.so.8 etc..
This is how OS4.1 comes like. So you can blame quality control if you like
Then people started using these libs... so, can you blame them?
Now I compile and edit version_type in libtool to "freebsd-elf" along with "pass_all" for deplibs_check_method. freebsd-elf will make sure the ".la" and soname have the right version numbers, and "pass_all" will make sure that all dependencies the .so needs are referenced in the .so (but i've almost always been doing that).
So, I started by doing it "wrong" to be consistent. So files can just be overwritten with new versions.
Now, I do it "right", and of course it gets more messy, but at least there'll be no conflicts.
The question as to whether it's OK to overwrite older files is yes (mostly), as long the major revision number of the library is the same. libpng is an exception.
I.E For libcurl, 7.16 and 7.21.2 are both in the "7" range are therefore should be compatible.
The only reason I don't have a symlink in the .lha's from .so.7 (for example) to just .so, is because .lha's don't archive symlinks, i'd have to make an install script or i'd have to duplicate the file (which sometimes I do if it's small enough) which just bloats the archive.
I see no reason to have symlinks in SObjs: at all. All programs load the relevant .so they're after directly. A symlink is only useful if you're trying to force an old program to use a new .so that has a different name, in which you need to be careful about that and the programs you use.
The symlinks, in my opinion, are only useful for use in the actual SDK. If it's not named just .so, then -lcurl for example won't find libcurl.so.7, but will find libcurl.a and link that instead. You need the symlink for the linker to use the shared version, unless you specify the full filename manually.
It's messy in Linux too in my opinion. Except programs get updated frequently and older .so's are seldom used.
Have a read of my older post about this same issue here:
http://www.amigans.net/modules/newbb/ ... t_id=57858#forumpost57858If you are unsure what to do, you can make a "SObjs" directory in the root directory of the program you want to run, then put the requires .so's in there. The program will use those first.