Não é possível compilar o GDB7.8 com suporte a Python

2

Estou tentando instalar o GDB7.8 com suporte a Python. Na pasta de origem, estou executando ./configure --with-python Quando fiz tab-complete de --with- eu não vi Python na lista. Mas quando eu corri configure com esse sinalizador, ele não baulk.

Quando eu executo o make, ele reclama que o Python não foi encontrado.

checking for python2.7... no

mas o Python está instalado:

 $ which python
python                python2.7             python2.7-dbg-config
python2               python2.7-dbg 

$ which python2.7 
/usr/bin/python2.7

Eu compilei o GDB sem --with-python e coisas instaladas sem erro. Fiquei com a impressão de que o GDB7.8 tinha suporte a Python sem a necessidade de sinalizadores especiais. Mas quando eu corro:

$gdb python
(gdb) run test.py

Eu recebo algum tipo de erro de importação do gdb Import

Então eu tentei chamar "pi":

(gdb) pi printf.py
Python scripting is not supported in this copy of GDB.

Então ... como obtenho suporte ao Python no GDB7.8? não é realmente suportado? Ou eu não deveria chamar "pi"?

    
por j0h 20.08.2014 / 03:52

1 resposta

8

Gente,

Eu passei um bom tempo trabalhando para obter o gdb (7.9) para trabalhar com Python (2.7). No final, tudo funcionou muito bem. No entanto, há um monte de coisas que você tem que acertar. O ponto principal é que o script de configuração do gdb tenta compilar um pequeno programa em C que se parece com isso.

#include "Python.h"
int
main ()
{
Py_Initialize ();
  ;
  return 0;
}

Se este programa não for compilado, o suporte ao Python não será compilado. Para este programa compilar, o arquivo include do Python.h deve ser encontrado em /usr/include/python2.7. Este arquivo só existirá se o pacote python-devel estiver instalado. No meu sistema (redhat), o comando para instalar este pacote é sudo yum install python-devel.

No entanto, isso não é suficiente para instalar o Python. Antes do script configure tentar compilar o programa C, ele obtém várias opções de python-config.py. Se essas opções não estiverem corretas, o programa C não será compilado. No meu sistema, o python-config.py retornou as opções abaixo.

-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic

Estas opções não causaram problemas no meu ambiente. Outras pessoas tiveram problemas com as opções retornadas de python-config.py e fizeram alterações no python-config.py para resolver esses problemas. No meu sistema, o comando completo de compilação era

gcc -o conftest -g -O2   -I/usr/include/python2.7 -I/usr/include/python2.7 \
    conftest.c -ldl -lncurses -lz -lm -ldl    -lpthread -ldl -lutil -lm \
    -lpython2.7 -Xlinker -export-dynamic

Este comando de compilação foi concluído sem erros assim que eu instalei o python-devel. Note que você não precisa inserir manualmente o comando gcc. Eu executei o comando gcc várias vezes para ter certeza de que tudo estava correto. Normalmente, o script de configuração executará o compilador para você. Observe também que, para concluir o processo geral de instalação do gdb, o makeinfo também precisava ser instalado. O comando para instalar o makeinfo foi sudo yum install texinfo.

No geral, o conjunto correto de etapas parece ser

Install python-devel
Install texinfo

Download the gdb source and gunzip it and untar it. 
cd to the gdb-7.9 directory with the configure file. 
./configure --prefix=/usr --with-python
make 
sudo make install

Deve ser possível obter o gdb para trabalhar com o Python 3. Os vários scripts gdb e programas de instalação mencionam o Python 3 em muitos, muitos lugares. No entanto, o procedimento correto para instalar o gdb com o Python 3 é desconhecido para mim neste momento.

    
por Peter Schaeffer 07.03.2015 / 07:41