Python.h encontrado por localizar mas não por GCC

8

Acabei de escrever um executável C simples para verificar se Python.h está funcionando ou não

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

Obviamente, não faz muito. No entanto, quando tento compilá-lo com gcc , ocorre um erro:

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

Então eu verifiquei se o python-dev tem Python.h instalado ou não usando locate .

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

É claro para mim que tenho o arquivo de cabeçalho Python.h em meu sistema. Como faço para que meu executável funcione?

    
por user2738777 02.03.2015 / 19:02

2 respostas

16

Você precisa qualificar sua inclusão

#include <python2.7/Python.h>

Ou diga ao gcc onde encontrar o Python.h com o

gcc -I /usr/include/python2.7/ program.c 
    
por stedotmartin 02.03.2015 / 19:20
6

Você precisa fornecer ao GCC o caminho de inclusão para o cabeçalho Python.h . Isso pode ser feito com o sinalizador -I :

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

No entanto, existe uma maneira melhor: use pkg-config :

pkg-config --cflags python

Isso exibirá os sinalizadores que precisam ser passados para o GCC para compilar aplicativos que usam os cabeçalhos e bibliotecas do Python.

Ao vincular, use a saída desse comando para incluir as bibliotecas apropriadas:

pkg-config --libs python

Você pode até combinar as duas etapas com:

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

Tags