通过locate找到的Python.h,但不是由GCC找到的


12

我只是写了一个简单的C可执行文件来检查是否Python.h正常工作

#include<Python.h>
#include<stdio.h>
int main()
{
    printf("this is a python header file included programm\n");
    return 0;
}

显然,它并没有太大作用。但是,当我尝试使用gcc它进行编译时,出现一个错误:

foo.c:1:19: fatal error: Python.h: No such file or directory.

然后,我检查了python-dev安装python-dev软件包是否已Python.h安装或未使用locate

$locate Python.h
/usr/include/python2.7/Python.h

对我来说很明显,Python.h我的系统上有头文件。如何使我的可执行文件正常工作?


欢迎来到askubuntu!如果我错了,请纠正我,但我会认为编译器找不到Python.h,因为它不在您的工作目录中,并且未指定完整路径。
极客长老

Answers:


18

您需要限定包含

#include <python2.7/Python.h>

或者告诉gcc在哪里可以找到Python.h

gcc -I /usr/include/python2.7/ program.c 

7

您需要为GCC提供Python.h标头的包含路径。这可以通过-I标志来完成:

gcc -c -I / usr / include / python2.7 sourcefile.c

但是,还有一种更好的方法:使用pkg-config安装pkg-config

pkg-config --cflags python

这将输出需要传递给GCC的标志,以编译使用Python标头和库的应用程序。

链接时,请使用此命令的输出来包括适当的库:

pkg-config --libs python

您甚至可以将以下两个步骤结合在一起:

gcc`pkg-config --cflags --libs python` sourcefile.c

在“ gcc -c -I ...”之后,我只有扩展名为.o的文件,如何获得可执行文件?
RS

@RS您需要链接它,尝试做这样的事情:"gcc file.o -o program"
Nathan Osman

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.