On Mon, 2013-01-14 at 11:26 +0100, Jan Engelhardt wrote:
On Monday 2013-01-14 08:27, Roger Oberholtzer wrote:
I just deployed an app compiled on 12.1 to run on an 11.2 system. I thought I would need to statically link it since it was built 'in the future'. Oddly, this was not needed. Which was a surprise.
As to statically linking, there are a few libraries that won't link statically. Unless I am mistaken, libc is one of them.
It was libnss_* - these are always dlopened even if the code that issues the dlopen (getpwnam/etc. and libdl) is included in static form.
The logic for that is that it is so closely tied to the kernel that things will be better if libc and the kernel match.
This is nonsense.
No it is not. Something as 'simple' as the signal() call, which you would think is a simple wrapper over some kernel call, has lots of support code in glibc to make it work properly with the specific version of the kernel. glibc is compiled with the kernel headers. Not so long ago, updating the kernel required that you had a glibc version that was compatible. Otherwise, your system would function improperly Of course, one function of glibc is to hide these kernel differences from user programs. Unless you are setting up traps yourself, you access the kernel pretty much via glibc. So, theoretically, an application compiled with one version of glibc should pretty much work with another version of glibc. In fact, that was what I said. And the only way this works is if glibc is not statically linked in to the app. So, Linda's suggestion that all apps be statically linked does not resolve her glibc issue. Yours sincerely, Roger Oberholtzer Ramböll RST / Systems Office: Int +46 10-615 60 20 Mobile: Int +46 70-815 1696 roger.oberholtzer@ramboll.se ________________________________________ Ramböll Sverige AB Krukmakargatan 21 P.O. Box 17009 SE-104 62 Stockholm, Sweden www.rambollrst.se -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org