如何在 Fedora 中的 so 文件中创建符号版本化函数?

如何在 Fedora 中的 so 文件中创建符号版本化函数?

由于 Fedora 中存在以下错误:

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

我决定编译我自己的 zlib 和 libpng 版本。但这样做之后,我意识到 libcairo 无法链接到我的新 libpng 版本。经过一番调查,发现原因是系统 libpng 中的符号包含符号版本,例如:

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

但在我编译的版本中,符号确实包含版本修饰:

> 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

我如何让 cmake、编译器和链接器生成这些符号注释?

相关内容