LINUX.ORG.RU

Проконсультируйте со сборкой GDB из linux для встраиваемых систем.


0

1

У меня со проблема со сборкой GBD для запуске на контроллере, на котором linux с версией ядра: 2.6.11 и, как я понял, процессор на нём i486. при запуске команды uname -a:

...... i486 unknown
я скачал исходники gdb (разные версии 7.2, 6.5) и пытаюсь собрать gdb из linux для этого контроллера. Смотрел все возможные manual'ы, например http://rus-linux.net/lib.php?name=/MyLDP/algol/gdb-remote.html Как мне правильно нужно прописать configure ? я пробовал варианты сборки с указанием: --target --host когда ставлю LDFLAGS='-static' вообще прерывается на configure и пишет что нет компилятора. Как мне нужно правильно указать все флаги? Может ли быть такое что я как-то криво собрал libncurses.so.5 ? Хотя она отвечает за ввода/вывод и gdb когда просто набираешь ./gdb нормально запускается, но когда начинаю отладку сразу segmentation fault. Причём после запуска gdb и segmentation fault на нём, все бинарники на контроллере тоже выдают segmentation fault, видимо он как-то ядро влияет - помогает только перезагрузка.


О, я тебя с этим вопросом на hashcode видел ) А скачать собранный gdb что мешает? Например, вытащить из пакета слаки/дебиана/еще чего-нибудь близкого по версиям зависимостей.

drakmail ★★★★
()
Ответ на: комментарий от drakmail

я вот посмотрел сейчас исходники gdb, да у меня такое ощущение, что он сам падает из-за dlopen, потому я забил поиск по его коду и там эта функция много где вызывается

g-71
() автор топика

Ограничься по началу сборкой gdbserver, так как у него минимум зависимостей.

Постарайся, чтобы gdbserver и gdb у тебя были из одной и той же версии gdb (исходников). Определись что у тебя за окружение на железке, (glibc? uclibc? версии библиотек?), попытайся построить такое же у себя на компе в чруте. Потому что багосовместимость, старое ядро (<2.6.16), могут влиять, делая твои бинарники ABI-несовместимыми. Попробуй также отыскать тот тулчейн, которым все это когда-то собиралось. Или сделай свой, используя хедеры ядра от 2.6.11 и соответствующие версии библиотек.

Так как у тебя все рамках x86, это не будет сложно, просто используй 32-битную систему для этого, дабы не увеличивать трудности.

slapin ★★★★★
()
Ответ на: комментарий от slapin

у меня такая проблема. Если собрать helloworld в котором открывается so либа, то в нём валится dlopen, т.е. при вызове dlopen сразу же segmentation fault. Я посмотрел исходник gdb там есть вызовы dlopen - может в это еще проблема?

g-71
() автор топика
Ответ на: комментарий от g-71

Мне gdbserver --help был интересен. Но судя по всему это пройдет. Сам gdb имеет внутри себя массу отладочных средств. dlopen скорее всего не важен в данном случае. После старта gdb можно попытаться понять где возникает проблема за счет «set debug <tab><tab> и выбрать интересные варианты. Например, set debug target, set debug infrun и т.п.

io ★★
()
Ответ на: комментарий от g-71

С кусками *libc осторожнее - они тесно привязяны друг к другу.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.