Не может скомпилировать GDB7.8 с поддержкой Python

Я пытаюсь установить GDB7.8 с поддержкой Python. От исходной папки я работаю ./configure --with-python Когда я сделал полный вкладкой от - с - я не видел Python в списке. Но когда я работал, настраивают с тем флагом, он не мешал.

Когда я работаю, делают, это жалуется, что Python не найден.

checking for python2.7... no

но Python установлен:

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

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

Я скомпилировал GDB без - с Python и вещи, установленные без ошибки. У меня создалось впечатление, что GDB7.8 имел поддержку Python без потребности в специальных флагах. Но когда я работаю:

$gdb python
(gdb) run test.py

Я получаю своего рода, не может импортировать ошибку Импорта gdb

Таким образом я пытался назвать "пи":

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

Так..., как я получаю поддержку Python в GDB7.8? разве это на самом деле не поддерживается? Или разве я не должен называть "пи"?

2
задан 20 August 2014 в 18:04

2 ответа

Люди,

я провел довольно мало времени, работая над получением gdb (7.9) для работы с Python (2.7). В конце все работало скорее хорошо. Однако существует набор вещей, в которых необходимо разобраться. Ключевой пункт - то, что gdb настраивают попытки сценария скомпилировать маленькую программу C, которая похожа на это.

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

, Если эта программа не скомпилирует, то поддержка Python не будет создана. Для этой программы для компиляции Python.h включают файл, должен быть найден в/usr/include/python2.7. Этот файл будет только существовать, если пакет python-devel будет установлен. В моей системе (Redhat) команда для установки этого пакета является sudo вкусным python-devel установки.

Однако этого недостаточно для устанавливания Python. Прежде чем настраивать сценарий пытается скомпилировать программу C, это получает различные варианты из python-config.py. Если эти опции не будут корректны, то программа C не скомпилирует. В моей системе python-config.py возвратил опции ниже.

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

Эти опции не вызвали проблем в моей среде. Другие люди имели проблемы с опциями, возвращенными из python-config.py, и внесли изменения в python-config.py для разрешения этих проблем. В моей системе полная команда компиляции была

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

Эта команда компиляции, завершенная без любых ошибок, как только я установил python-devel. Обратите внимание, что Вы не должны вручную вводить команду gcc. Я действительно выполнял команду gcc несколько раз, чтобы удостовериться, что все было корректно. Обычно, настраивать сценарий запустит компилятор для Вас. Также обратите внимание, что заставить полный процесс установки gdb завершаться, makeinfo также должно было быть установлено. Команда для установки makeinfo была sudo вкусной установкой texinfo.

В целом, корректный набор шагов, кажется,

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

, должно быть возможно заставить gdb работать с Python 3. Различные gdb сценарии и программы установки упоминают Python 3 во многих, многих местах. Однако корректная процедура установки gdb с Python 3 неизвестна мне в этой точке.

8
ответ дан 5 August 2019 в 08:39

Благодаря отличному ответу Питера Шеффера я смог собрать и установить GDB 8.3.1 с Python 3.6 из исходного кода. Критическое понимание заключалось в том, что LDFLAGS и LIBS, которые ./configure принимает , отличаются от LDFLAGS и LIBS, который требует make. Да они должны быть одинаковыми, но в данном случае их не было.


Предварительные шаги

  1. установить пакет python3

  2. установить пакет python3-devel

  3. установить пакет texinfo

  4. запустить /usr/bin/python3.6-config --includes; который напечатал (дважды!)

    -I/usr/include/python3.6m
    
  5. запустите /usr/bin/python3.6-config --ldflags; который напечатал

    -L/usr/lib64 -lpython3.6m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic
    
  6. запустите /usr/bin/python3.6-config --libs; который напечатал

    -lpython3.6m -lpthread -ldl -lutil -lm
    
  7. найдите реальный путь к двоичному файлу «python3», запустив readlink --canonicalize-existing $(который python3); который напечатал

    /usr/bin/python3.6
    

Этапы сборки

export CFLAGS="-I/usr/include/python3.6m"
export LDFLAGS="-L/usr/lib64"
export LIBS="-lpython3"

readonly configureOptions="\
--disable-ada \
--disable-cloog-version-check \
--disable-gdbmi \
--disable-host-shared \
--disable-isl-version-check \
--disable-libssp \
--disable-libquadmath \
--disable-libquadmath-support \
--disable-objc-gc \
--disable-source-highlight \
--disable-stage1-checking \
--disable-static-libjava \
--disable-tui \
--disable-werror \
--enable-stage1-languages=c,c++ \
--enable-vtable-verify \
--with-python=/usr/bin/python3.6 \
--with-static-standard-libraries \
--with-system-zlib \
--without-cloog \
--without-guile \
--without-isl \
--without-mpfr \
"
./configure $configureOptions

export LDFLAGS="-L/usr/lib64 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic"
export LIBS="-lpython3.6m -lpthread -ldl -lutil -lm"

make

make install
2
ответ дан 15 December 2020 в 03:37

Другие вопросы по тегам:

Похожие вопросы: