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


12

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-devpython-devをインストールしますパッケージがPython.hインストールされているかどうかを確認しましたlocate

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

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


askubuntuへようこそ!私が間違っている場合は修正してください。しかし、コンパイラはPython.hが作業ディレクトリになく、フルパスが指定されていないため、Python.hを見つけられないと仮定します。
オタク長老

回答:


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

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

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

pkg-config --libs python

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

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

「gcc -c -I ...」の後に、拡張子が.oのファイルのみがありますが、実行可能ファイルを取得するにはどうすればよいですか?
RS

:あなたはそれをリンクする必要が@RSは、このような何かやってみてください"gcc file.o -o program"
ネイサン・オスマン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.