Impossibile compilare GDB7.8 con il supporto di Python

2

Sto cercando di installare GDB7.8 con il supporto di Python. Dalla cartella di origine, sto eseguendo ./configure --with-python Quando ho fatto tab-complete da --with- non ho visto Python nella lista. Ma quando ho eseguito configure con quella flag, non si è verificato.

Quando eseguo make, si lamenta che Python non viene trovato.

checking for python2.7... no

ma Python è installato:

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

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

Ho compilato GDB senza --with-python e cose installate senza errori. Avevo l'impressione che GDB7.8 avesse il supporto per Python senza la necessità di bandiere speciali. Ma quando corro:

$gdb python
(gdb) run test.py

Mi viene in qualche modo impossibile importare l'errore di importazione di gdb

Quindi ho provato a chiamare "pi":

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

Quindi ... come posso ottenere il supporto per Python in GDB7.8? in realtà non è supportato? O non dovrei chiamare "pi"?

    
posta j0h 20.08.2014 - 03:52

1 risposta

8

La gente,

Ho passato un bel po 'di tempo a lavorare su come ottenere gdb (7.9) per lavorare con Python (2.7). Alla fine tutto ha funzionato piuttosto bene. Tuttavia, ci sono un sacco di cose che devi andare bene. Il punto chiave è che lo script gdb configure prova a compilare un piccolo programma C simile a questo.

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

Se questo programma non verrà compilato, il supporto Python non verrà creato. Per compilare questo programma, il file di inclusione di Python.h deve essere trovato in /usr/include/python2.7. Questo file esiste solo se è installato il pacchetto python-devel. Sul mio sistema (redhat), il comando per installare questo pacchetto è sudo yum install python-devel.

Tuttavia, non è sufficiente per installare Python. Prima che lo script di configurazione tenti di compilare il programma C, ottiene varie opzioni da python-config.py. Se queste opzioni non sono corrette, il programma C non verrà compilato. Sul mio sistema, python-config.py ha restituito le opzioni di seguito.

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

Queste opzioni non hanno causato alcun problema nel mio ambiente. Altre persone hanno avuto problemi con le opzioni restituite da python-config.py e hanno apportato modifiche a python-config.py per risolvere questi problemi. Sul mio sistema il comando di compilazione completo 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

Questo comando di compilazione è stato completato senza errori non appena ho installato python-devel. Nota che non devi inserire manualmente il comando gcc. Ho eseguito più volte il comando gcc per assicurarmi che tutto fosse corretto. Normalmente, lo script di configurazione eseguirà il compilatore per te. Si noti inoltre che per completare il processo di installazione di gdb nel suo complesso, è stato necessario installare anche makeinfo. Il comando per installare makeinfo era sudo yum install texinfo.

Nel complesso, l'insieme corretto di passaggi sembra essere

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

Dovrebbe essere possibile far funzionare gdb con Python 3. I vari script gdb e programmi di installazione menzionano Python 3 in molti, molti posti. Comunque, la procedura corretta per installare gdb con Python 3 non mi è nota a questo punto.

    
risposta data Peter Schaeffer 07.03.2015 - 07:41

Leggi altre domande sui tag