Buildroot кросс-компиляция GDB-сервера для MIPS32 - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь скомпилировать версию сервера GDB из исходного кода для архитектуры MIPS32. Я использую машину x86_64.

Я использую компилятор Buildroot uClibc для MIPS (mips-buildroot-linux-uclibc-gcc).

Из каталога сервера GDB я запускаю команду ./configure:

./configure --host=mips-buildroot-linux-uclibc AR=${CROSS}ar LD=${CROSS}ld CC=${CROSS}gcc CXX=${CROSS}g++ RANLIB=${CROSS}ranlib LIBS=-L/root/Desktop/buildroot/buildroot-2018.02.2/output/host/lib

С $CROSS, имеющим значение mips-buildroot-linux-uclibc-

./configure работает, но я заметил, что в выводе упоминается checking whether we are cross compiling... no. Не похоже, что ./configure обнаруживает, что я пытаюсь выполнить кросс-компиляцию.

Затем я запускаю make LDFLAGS=-static, что приводит к ошибке:

ld: cannot find -lthread_db
collect2: error: ld returned 1 exit status
Makefile:379: recipe for target 'gdbserver' failed
make: *** [gdbserver] Error 1

Я прочитал, что вы можете удалить зависимости lthread_db на GDB-сервере makefile, однако мне нужно отлаживать многопоточные приложения.

Как я могу кросс-компилировать сервер GDB для архитектуры MIPS32, используя набор инструментов кросс-компиляции Buildroot?

1 Ответ

0 голосов
/ 10 мая 2018

Поскольку вы все равно собираете цепочку инструментов с помощью Buildroot, проще всего также собрать gdbserver с помощью Buildroot.

  • Убедитесь, что в меню панели инструментов включена отладка библиотеки потоков (BR2_PTHREAD_DEBUG).
  • Выберите GDB из целевых пакетов -> Отладка. Затем gdbserver выбирается по умолчанию. Вам не нужен полный GDB.
  • Вы, очевидно, хотите статический исполняемый файл, поэтому выберите Static only в параметрах сборки -> библиотеки.

Это должно дать вам статически связанный исполняемый файл gdbserver.

Обратите внимание, что если вы измените параметры цепочки инструментов (отладка библиотеки потоков, статические библиотеки), вам придется выполнить полное перестроение с помощью make clean; make.

...