web-dev-qa-db-ja.com

Python.hはGCCではなく、locateによって検出されました

Python.hが機能しているかどうかを確認する簡単なC実行可能ファイルを作成しました

#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 Install python-dev パッケージにPython.hがインストールされているか、locateを使用していない。

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

システムにPython.hヘッダーファイルがあることは明らかです。実行可能ファイルを機能させるにはどうすればよいですか?

11
user2738777

インクルードを修飾する必要があります

#include <python2.7/Python.h>

または、gccにPython.hの場所を伝えます

gcc -I /usr/include/python2.7/ program.c 
18
0x7c0

Python.hヘッダーのインクルードパスをGCCに提供する必要があります。これは、-Iフラグを使用して実行できます。

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

しかし、より良い方法があります: pkg-config Install pkg-config

pkg-config --cflags python

これにより、Pythonヘッダーとライブラリを使用するアプリケーションをコンパイルするためにGCCに渡す必要のあるフラグが出力されます。

リンクするときに、このコマンドの出力を使用して適切なライブラリを含めます。

pkg-config --libs python

両方のステップを以下と組み合わせることもできます。

gcc `pkg-config --cflags --libs python` sourcefile.c
7
Nathan Osman