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 パッケージにPython.h
がインストールされているか、locate
を使用していない。
$locate Python.h
/usr/include/python2.7/Python.h
システムにPython.h
ヘッダーファイルがあることは明らかです。実行可能ファイルを機能させるにはどうすればよいですか?
インクルードを修飾する必要があります
#include <python2.7/Python.h>
または、gccにPython.hの場所を伝えます
gcc -I /usr/include/python2.7/ program.c
Python.h
ヘッダーのインクルードパスをGCCに提供する必要があります。これは、-I
フラグを使用して実行できます。
gcc -c -I/usr/include/python2.7 sourcefile.c
しかし、より良い方法があります: pkg-config :
pkg-config --cflags python
これにより、Pythonヘッダーとライブラリを使用するアプリケーションをコンパイルするためにGCCに渡す必要のあるフラグが出力されます。
リンクするときに、このコマンドの出力を使用して適切なライブラリを含めます。
pkg-config --libs python
両方のステップを以下と組み合わせることもできます。
gcc `pkg-config --cflags --libs python` sourcefile.c