gcc是否应该找到Python.h而不传递-I/usr/include/python2.7/?

gcc是否应该找到Python.h而不传递-I/usr/include/python2.7/?,python,c++,c,gcc,Python,C++,C,Gcc,我在RedHat上写了一个小c程序: #include <Python.h> #include <stdio.h> int main() { printf("Hello, Python!\n"); return 0; } #包括 #包括 int main(){ printf(“你好,Python!\n”); 返回0; } 并得到以下错误: main.c:1:20:致命错误:Python.h:没有这样的文件或目录 因此,我找到了以下答案: 安装了pyt

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

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

int main() {
    printf("Hello, Python!\n");
    return 0;
}
#包括
#包括
int main(){
printf(“你好,Python!\n”);
返回0;
}
并得到以下错误:

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

因此,我找到了以下答案:

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

当然,当运行
gcc main.c-I/usr/include/python2.7/
时,一切都可以正常编译

我的问题是:

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


我相信这是一个有点奇怪的问题,但我问这个问题的原因是因为我得到了TensorFlow(git克隆)的相同错误,它应该是在bat下编译的。因为它不是,所以我假设我的环境缺少一些东西…

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

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

gcc将在这个目录中搜索没有任何附加开关的include。

这是非常正常的

您不能期望
gcc
读取Python环境变量-
gcc
独立于Python,并且与Python没有连接。Python可以使用
gcc
,就像(可能)成千上万的其他产品一样,但其他编译器也应该可用


gcc
列出了环境变量。请看一下
CPATH
,它可以代替
-I
,但请确保您准确阅读它的功能
C\u INCLUDE\u PATH
是一个备选方案。

似乎表明这是正常的。不要设置任何环境变量,将
-I/usr/INCLUDE/python2.7
显式传递给gcc。编写一个makefile来自动执行任务。如果您正在创建其他人可以在其机器上构建的真实软件,则需要某种自动配置工具,根据本地环境自动构建makefile或类似的构建脚本。如果你只是在学习,你也可以用`#include来代替所有这些。事实上,争论的是另一种方式——GCC可以使用数千个库,其中一些库在GCC构建时甚至不存在。GCC将如何了解
/usr/include/Crattsnake1.0