Python.h gefunden von locate, aber nicht von GCC

8

Ich habe gerade eine einfache C-Datei geschrieben, um zu überprüfen, ob Python.h funktioniert oder nicht

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

Offensichtlich tut es nicht viel. Wenn ich jedoch versuche, es mit gcc zu kompilieren, bekomme ich einen Fehler:

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

Dann habe ich überprüft, ob python-dev Paket hat Python.h installiert oder nicht locate verwendet.

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

Mir ist klar, dass ich die Header-Datei Python.h auf meinem System habe. Wie bekomme ich meine ausführbare Datei zum Laufen?

    
user2738777 02.03.2015, 19:02

2 Antworten

16

Sie müssen Ihr Include qualifizieren

#include <python2.7/Python.h>

Oder teilen Sie GCC mit, wo Python.h mit dem

gefunden werden soll
gcc -I /usr/include/python2.7/ program.c 
    
stedotmartin 02.03.2015, 19:20
6

Sie müssen GCC mit dem Include-Pfad für den Header Python.h angeben. Dies kann mit dem -I Flag erfolgen:

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

Allerdings gibt es einen besseren Weg: Verwenden Sie pkg-config :

pkg-config --cflags python

Dies wird die Flags ausgeben, die an GCC übergeben werden müssen, um Anwendungen zu kompilieren, die die Python-Header und Bibliotheken verwenden.

Verwenden Sie beim Verknüpfen die Ausgabe dieses Befehls, um die entsprechenden Bibliotheken einzubeziehen:

pkg-config --libs python

Sie können beide Schritte sogar kombinieren mit:

gcc 'pkg-config --cflags --libs python' sourcefile.c
    
Nathan Osman 02.03.2015 19:25

Tags und Links