On 04/25/2016 04:53 AM, Dallman, John wrote:
> Mats wrote:
>
>> First off, yes... everything you see above is "as expected". The LSB
>> libraries in /opt/lsb
>> are link-time only libraries; you would expect that your target system's
>> run-time copies
>> would contain the multiple versions. It is by this very trick (only one
>> symbol version in
>> LSB stubs) that building to "a specific LSB version" is made to request the
>> appropriate
>> symbol versions for that binary.
>
> OK, but it seems I have been suffering from a significant misunderstanding of
> LSB inter-version compatibility. LSB 3.x applications are supported on LSB
> 4.x, 5.x and 6.x (when it happens) systems. However, linking this example
> LSB-3.1-built DSO into an LSB 5.0 application does not work, because the
> linker checks for all the symbols used by the DSO and fails to find one of
> them in the LSB 5.0 link-time-only libraries.
>
> Are there meant to be any promises about DSOs built with older LSB versions
> being usable in later ones? Or are the promises all in terms of complete
> applications? I'm used to development tool suppliers not considering this
> kind of situation.
The promises are mainly for fully linked applications. It's possible
not everything with DSOs has been fully thought through - my reaction is
that you should be able to transport the libraries between versions but
it looks like the problem you mention is going to crop up. I've done a
quick experiment and it looks like symbol versions do get picked up
during the creation of the shared library - I see this in a plain .o object:
12: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND puts
but once that is turned into a shared library it looks like this:
23: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@@GLIBC_2.2.5
>
>> For browsing the story about symbol versioning and inclusion in LSB
>> versions, use the LSB
>> Navigator, https://linuxbase.org/navigator
>
> I think you've misunderstood me. I'm looking for an introduction to how Linux
> symbol versioning works, and in particular, what the difference between "@"
> and "@@" means, for "memcpy@GLIBC_2.2.5" and "memcpy@@GLIBC_2.2.5"
@@ refers to the default version, a single @ to other versions that are
also present.
_______________________________________________
lsb-discuss mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/lsb-discuss