Folgende Frage How do applications resolve to different versions of shared libraries at run time?, fragte ich mich, wie in der Link-Befehlszeile anzugeben, welche Version der Bibliothek zu verwenden?Wie wird die Bibliotheksversion angegeben, die zur Verbindungszeit verwendet werden soll?
Sagen wir, ich
libmy.so.1.0
libmy.so.1 -> libmy.so.1.0
libmy.so.2.0
libmy.so.2 -> libmy.so.2.0
libmy.so -> libmy.so.2
Die übliche Art und Weise haben, die Bibliothek geben mit der ausführbaren Datei zu verknüpfen zeigt nicht die Version zu verwenden. Außerdem ist es sehr wahrscheinlich, dass man mit der neuesten Version verlinken möchte. Daher funktioniert die übliche Linie in den meisten Fällen gut.
gcc app.o -lmy -o app
Was ist die Befehlszeile app
zu verknüpfen, die Version 1 der Bibliothek verwendet werden soll?
Vorsicht: was Linker verwendet, und was dynamicaly auf Laufzeit aufgelöst wird (was 'ldd app' zeigen) ist vielleicht nicht die gleiche Sache sein . –