gcc应该在没有传递-I / usr / include / python2.7 /的情况下找到Python.h吗?

时间:2017-09-05 06:23:22

标签: python c++ c gcc

我在RedHat上写了一个小程序:

#include <Python.h>
#include <stdio.h>

int main() {
    printf("Hello, Python!\n");
    return 0;
}

并收到以下错误:

  

main.c:1:20:致命错误:Python.h:没有这样的文件或目录

所以我找到了以下答案:fatal error: Python.h: No such file or directory

安装了python-devel。我验证/usr/include/python2.7/Python.h存在,但仍然遇到相同的错误。

当然,在运行gcc main.c -I/usr/include/python2.7/时,一切都很好。

我的问题是:

在编译时添加-I/usr/include/python2.7/是否正确,或者是否存在某种gcc应该期望的内置env变量(类似于PYTHON_DEV_HOME)。

我相信这是一个奇怪的问题,但我问的原因是因为我得到TensorFlow(git cloned)的相同错误,这应该是蝙蝠编译。既然不是,我认为我的环境缺少某些东西......

2 个答案:

答案 0 :(得分:1)

您通常应该使用-I指定它,但是 - 要回答问题 - 您还可以设置CPATH环境变量:

export CPATH=:/usr/include/python2.7/

和gcc将在此目录中搜索包含,而不需要任何其他开关。

答案 1 :(得分:1)

这完全正常。

您不能指望gcc读取Python环境变量 - gcc独立于Python且与之无关。 Python可以使用gcc,也可以使用(可能)成千上万的其他产品,但其他编译器也应该可用。

列出了{p> gcc个环境变量here。看一下可以用CPATH代替-I的{​​{1}},但请务必仔细阅读它的作用。 C_INCLUDE_PATH是另一种选择。