Я пытаюсь установить 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? разве это на самом деле не поддерживается? Или разве я не должен называть "пи"?
Люди,
я провел довольно мало времени, работая над получением 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 неизвестна мне в этой точке.
Благодаря отличному ответу Питера Шеффера я смог собрать и установить GDB 8.3.1 с Python 3.6 из исходного кода. Критическое понимание заключалось в том, что LDFLAGS
и LIBS
, которые ./configure
принимает , отличаются от LDFLAGS
и LIBS
, который требует make
. Да они должны быть одинаковыми, но в данном случае их не было.
установить пакет python3
установить пакет python3-devel
установить пакет texinfo
запустить /usr/bin/python3.6-config --includes
; который напечатал (дважды!)
-I/usr/include/python3.6m
запустите /usr/bin/python3.6-config --ldflags
; который напечатал
-L/usr/lib64 -lpython3.6m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic
запустите /usr/bin/python3.6-config --libs
; который напечатал
-lpython3.6m -lpthread -ldl -lutil -lm
найдите реальный путь к двоичному файлу «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