Como criar funções com versão de símbolo em um arquivo so no Fedora?

Como criar funções com versão de símbolo em um arquivo so no Fedora?

Devido ao seguinte bug no Fedora:

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

Decidi compilar minhas próprias versões do zlib e libpng. Mas depois de fazer isso, percebi que o libcairo não conseguia vincular à minha nova versão do libpng. Algumas investigações mostraram que o motivo era que os símbolos no sistema libpng continham a versão do símbolo, por exemplo:

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

mas na minha versão compilada os símbolos contêm a decoração da versão:

> 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

Como posso fazer com que o cmake, o compilador e o vinculador gerem essas anotações de símbolos?

informação relacionada