Wie erstelle ich symbolversionierte Funktionen in einer So-Datei in Fedora?

Wie erstelle ich symbolversionierte Funktionen in einer So-Datei in Fedora?

Aufgrund des folgenden Fehlers in Fedora:

http://forums.fedoraforum.org/showthread.php?t=296524

Ich beschloss, meine eigenen Versionen von zlib und libpng zu kompilieren. Doch dabei stellte ich fest, dass libcairo nicht auf meine neue libpng-Version verweisen konnte. Einige Nachforschungen zeigten, dass der Grund dafür darin lag, dass die Symbole in der System-libpng die Symbolversion enthielten, z. B.:

readelf -Ws /usr/lib/libpng16.so.16.6.0  | awk '{print $8}' | grep -i version
png_access_version_number@@PNG16_0
png_get_header_version@@PNG16_0

aber in meiner kompilierten Version enthalten die Symbole die Versionsdekoration:

> readelf -Ws /usr/local/lib/libpng16.so.16.6.0   | awk '{print $8}' | grep -i version
png_get_header_version
png_user_version_check
png_access_version_number

Wie kann ich cmake, den Compiler und den Linker dazu bringen, diese Symbolanmerkungen zu generieren?

verwandte Informationen