¿Cómo crear funciones versionadas con símbolos en un archivo so en Fedora?

¿Cómo crear funciones versionadas con símbolos en un archivo so en Fedora?

Debido al siguiente error en Fedora:

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

Decidí compilar mis propias versiones de zlib y libpng. Pero después de hacerlo, me di cuenta de que libcairo no podía vincularse a mi nueva versión de libpng. Algunas investigaciones mostraron que la razón era que los símbolos en el sistema libpng contienen la versión del símbolo, por ejemplo:

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

pero en mi versión compilada los símbolos contienen la decoración de la versión:

> 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

¿Cómo puedo hacer que cmake, el compilador y el vinculador generen estas anotaciones de símbolos?

información relacionada