Quote: Original post by Metron
So if I understand correctly, anyone wanting to distribute binaries to Linux distributions has to counter check if it actually works on the different distributions. How does one cope with such much work?!?
Welcome to the fun world of Linux...
Well, in practice it's not that bad. If you don't link to a ton of weird third party libraries and use a recent version of GCC, binaries usually work on most modern distributions without recompiling.
Here, in a pretty large application we ported to Linux, the only system libraries we directly link to are (let me check) - pthread, dl, X11, gomp and usb (for a hardware dongle). And obviously the runtime libs. So far, it seems to work on most distribs we tried (Suse, RH, Ubuntu, Gentoo, Debian, and some other obscure ones). But there is never a guarantee.
In order to keep ourselves from being cornered legally, we officially only support Novell Suse (the standard 'industrial' distribution).
Oh yeah, and you can distribute your library or application using the 'xcopy deploy' method everybody loves from the Windows world. Means that you can just drop your .so in the same directory than your application, and forget about the weird fixed path places where Linux usually puts libraries. Most Linux people hate doing this, so it's not very well documented, but just add $ORIGIN to the rpath when linking your app or lib.
Quote: Original post by Metron
Not to sound harsh here, but this makes me really wonder how the Linux-defenders expect the Linux distribution to replace Windows on the common user machine?
Well, in their cozy little world, everything comes with source. So you (usually) don't have problems with binary interface incompatibilities.
Quote:
I'ld really like to distribute my lib to the Linux users. I'm currently looking into how to do this in the smoothest way. I don't want to compile it on the distribution upon installation because that would make my code public... and I don't want that...
Of course not. As I said above, try to link to as few system libraries as you can, and use an up to date version of gcc. That should you put (more or less) on the safe side.
But be prepared for ferocious attacks by open source zealots if you publically release your binary lib ;)