首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在编译时是否有标头标识SunOS/Solaris版本?

在编译时是否有标头标识SunOS/Solaris版本?
EN

Stack Overflow用户
提问于 2015-08-16 18:29:07
回答 4查看 608关注 0票数 3

我正在尝试在编译时检测Solaris/SunOS版本,以便启用/禁用port_create()和其他API的使用。

在编译时是否有标头标识SunOS/Solaris版本?

EN

回答 4

Stack Overflow用户

发布于 2015-08-16 19:16:30

如果没有头文件提供此信息,您当然可以解析uname的输出,并从构建脚本/makefile/生成-D预处理器选项...

票数 3
EN

Stack Overflow用户

发布于 2015-08-17 01:38:03

根据@meaning-matters的建议,可以进行编译时定义,比如SUN_VERSION使用uname -r的输出。这实际上给出了一个浮点数,例如5.10,您可以使用简单的sed命令将其转换为预处理器可比的形式,例如以下编译器选项:

代码语言:javascript
复制
-DSUN_VERSION=`uname -r | sed -e 's/\.\([0-9]\{1,1\}\)$/0\1/' -e 's/\.//'`

5.10生成510,为5.9生成509,等等。

在源程序中,您可以这样使用它

代码语言:javascript
复制
#if SUN_VERSION >= 510

(或者任何有意义的东西)。

票数 2
EN

Stack Overflow用户

发布于 2015-08-19 04:08:54

识别操作系统版本以断言API是否可用是有风险的,如果没有失败的话。您不能假设API将留在未来的版本中,也不能假设它在并行分支中可用(例如,Illumos vs Solaris11,这两个版本都报告了SunOS 5.11 )。

解决这个问题的通常方法是通过编译一个小的测试源代码来确定API是否可用。这通常是在一个传统上称为configure的脚本中完成的,该脚本根据您的系统构建一个Makefile和一个include文件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32034061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档