Python.h encontrado por localizar pero no por GCC

12

Acabo de escribir un simple ejecutable en C para verificar si Python.hfunciona o no

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

Obviamente, no hace mucho. Sin embargo, cuando trato de compilarlo gccme da un error:

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

Luego verifiqué si el paquete python-dev seInstalar python-dev ha Python.hinstalado o no locate.

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

Para mí está claro que tengo el Python.harchivo de encabezado en mi sistema. ¿Cómo hago para que funcione mi ejecutable?

usuario2738777
fuente
Bienvenido a askubuntu! Corríjame si me equivoco, pero supongo que el compilador no encuentra Python.h porque no está en su directorio de trabajo y no se ha especificado la ruta completa.
Élder Geek

Respuestas:

18

Necesita calificar su inclusión

#include <python2.7/Python.h>

O dile a gcc dónde encontrar Python.h con el

gcc -I /usr/include/python2.7/ program.c 
squareborg
fuente
7

Debe proporcionar a GCC la ruta de inclusión para el Python.hencabezado. Esto se puede hacer con la -Ibandera:

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

Sin embargo, hay una mejor manera: use pkg-configInstalar pkg-config :

pkg-config --cflags python

Esto generará los indicadores que deben pasarse a GCC para compilar aplicaciones que usan los encabezados y bibliotecas de Python.

Al vincular, use la salida de este comando para incluir las bibliotecas apropiadas:

pkg-config --libs python

Incluso podría combinar ambos pasos con:

gcc `pkg-config --cflags --libs python` sourcefile.c
Nathan Osman
fuente
Después de "gcc -c -I ..." Tengo solo un archivo con extensión .o, ¿cómo puedo obtener un archivo ejecutable?
RS
@RS Necesitas vincularlo, intenta hacer algo como esto:"gcc file.o -o program"
Nathan Osman