在mac os x上libstdc ++ 6.dylib版本号的含义是什么?

时间:2015-06-18 08:16:06

标签: macos g++ macports libstdc++

我尝试确定Mac OS X(Yosemite 10.10.3)上的gcc5.1端口正在运行哪个版本的libstdc ++。

otool命令提供以下信息:

/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.21.0)

version 7.21.0的含义是什么? libstdc ++ 7确实存在吗?

1 个答案:

答案 0 :(得分:0)

如果要查找libstdc ++版本的相应GCC版本号,请执行以下操作:

$> port provides /opt/local/lib/libgcc/libstdc++.6.dylib

这将告诉您哪个端口安装了给定文件。在我的情况下,那是libgcc,我会假设它对你来说是一样的。要查找当前安装的libgcc版本,请使用port installed

$> port installed libgcc

在我的系统上,那是libgcc @5.1.0_1 (active),所以libstdc ++的版本对应于GCC 5.1附带的版本。

请注意,OS X上的兼容版本与版本库文件名中给出的版本号不同。它更像是Linux系统上的次要版本号。有关详细信息,请参阅https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html#//apple_ref/doc/uid/TP40002013-SW23,具体此部分适用:

  

除主要版本号外,库还有次要版本号。次要版本号是使用格式X [.Y [.Z]]的增量编号,其中X是0到65535之间的数字,Y和Z是0到255之间的数字。例如,次要版本号Draw库的第一个版本可能是1.0。要设置动态库的次要版本号,请使用clang -current_version选项。

     

兼容版本号与次版本号类似;它是通过编译器-compatibility_version命令行选项设置的。库版本的兼容版本号指定与该版本链接的客户端可以使用的最早版本。例如,定义客户端兼容性中的示例表明Client 1.1不能使用早于1.2的Draw库版本,因为它们不会导出draw_polygon函数。要查看库的当前版本和兼容版本,请使用otool -L命令。