Je viens d'écrire un simple exécutable en C pour vérifier si Python.h
fonctionne ou non
#include<Python.h>
#include<stdio.h>
int main()
{
printf("this is a python header file included programm\n");
return 0;
}
Evidemment, ça ne fait pas grand chose. Cependant, lorsque j'essaie de le compiler avec gcc
, cela me donne une erreur:
foo.c:1:19: fatal error: Python.h: No such file or directory.
Puis j’ai vérifié si le python-dev le paquet a Python.h
installé ou n'utilise pas locate
.
$locate Python.h
/usr/include/python2.7/Python.h
Il est clair pour moi que j'ai le fichier d'en-tête Python.h
sur mon système. Comment faire fonctionner mon exécutable?
Vous devez qualifier votre include
#include <python2.7/Python.h>
Ou dites à gcc où trouver Python.h avec le
gcc -I /usr/include/python2.7/ program.c
Vous devez fournir à GCC le chemin d’inclusion pour l’en-tête Python.h
. Cela peut être fait avec le drapeau -I
:
gcc -c -I/usr/include/python2.7 fichier source.c
Cependant, il existe un meilleur moyen: utilisez pkg-config :
pkg-config --cflags python
Cela générera les indicateurs qui doivent être passés à GCC afin de compiler les applications qui utilisent les en-têtes et les bibliothèques Python.
Lors de la liaison, utilisez le résultat de cette commande pour inclure les bibliothèques appropriées:
pkg-config --libs python
Vous pouvez même combiner les deux étapes avec:
gcc `pkg-config --cflags --libs python` sourcefile.c