“配置”脚本如何检测我的系统是不是支持某些头文件或 cpp 功能?

Posted

技术标签:

【中文标题】“配置”脚本如何检测我的系统是不是支持某些头文件或 cpp 功能?【英文标题】:How does "configure" script detect if my system support some header files or cpp feature?“配置”脚本如何检测我的系统是否支持某些头文件或 cpp 功能? 【发布时间】:2018-09-12 10:38:58 【问题描述】:

我正在尝试在我的 RHEL 5 机器上编译 google rpc(grpc),配置脚本检查并抛出此错误:

configure: error: sched_yield was not found on your system

我检查了 config.log 文件,发现是这样的:

| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char sched_yield ();
| int
| main ()
| 
| return sched_yield ();
|   ;
|   return 0;
| 
configure:19729: result: no
configure:19736: error: in `/downloads/grpc/third_party/protobuf':
configure:19738: error: sched_yield was not found on your system

嗯,没错,我做了手动测试,没有找到。没问题。

But, I just wish to know the principle behind "configure"!

“配置”是否会尝试生成一些 c/c++ 源代码并对其进行编译,以查看是否支持某些功能?如您所知,“配置”脚本通常运行得非常快,比调用大量 gcc/g++ 进程来尝试标头/功能要快得多。

那么“configure”是如何实现这个header/feature“check”的呢?

【问题讨论】:

【参考方案1】:

“配置”是否会尝试生成一些 c/c++ 源代码并对其进行编译,以查看是否支持某些功能?

是的。

如您所知,“配置”脚本通常运行得非常快 [...]

根据我的经验不是。 configure 很慢www...

那么“configure”是如何实现这个header/feature“check”的呢?

参见问题 #1。

【讨论】:

同意,configure 太慢了,您不想每天都运行它。我只是希望递归项目配置可以重用答案!

以上是关于“配置”脚本如何检测我的系统是不是支持某些头文件或 cpp 功能?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 脚本 - 检测是不是在 linux 或 Windows 下运行?

如何从 Bash 脚本中检测操作系统?

如何检测我的苹果设备是不是支持蓝牙低功耗

考虑到它的参数,如何检测bash脚本是不是已经在运行[重复]

如何使用 Ruby 检测在 Windows 平台上是不是按下了 SHIFT 或 ALT 键?

如何在某些头文件(嵌套类)的 cpp 文件中包含我的实现