Получил ответ откуда-то еще, поставьте здесь на случай, если кто-то захочет сделать то же самое.
- Скачать исходный код gdb:
wget ftp://sourceware.org/pub/gdb/releases/gdb-9.1.tar.gz
Извлечь файл:
tar xzvf gdb-9.1.tar.gz
Переместить в исходную папку
cd gdb-9.1
Редактировать файл gdb / gdbserver / linux -low. c:
- 4.1. Добавьте две строки: Строка 107 и Строка 122 с содержанием ниже
#define HAVE_ELF32_AUXV_T // Line 107 (Added)
#ifndef HAVE_ELF32_AUXV_T
#define HAVE_ELF64_AUXV_T // Line 122 (Added)
#ifndef HAVE_ELF64_AUXV_T
Эта модификация необходима для сборки Android, поскольку системные библиотеки Android уже определяют struct Elf32_auxv_t и Elf64_auxv_t. (Пожалуйста, смотрите это для деталей: https://github.com/android/ndk/issues/1008)
- 4.2. Изменить функцию
linux_request_interrupt
:
static void
linux_request_interrupt (void)
{
/* .... */
- kill (-signal_pid, SIGINT); // replace this line with next 3 lines
+ int r = kill (-signal_pid, SIGINT);
+ if (r != 0)
+ kill (signal_pid, SIGINT);
}
Это исправляет ошибку «gdbserver не обрабатывает Ctrl+C
», подробности по адресу: https://sourceware.org/bugzilla/show_bug.cgi?id=18772
Сборка GDB для linux:
sudo apt-get install build-essential \
gcc g++ make autogen m4 \
bison gettext libpython-dev
mkdir build-linux
cd build-linux/
../configure --enable-targets=all --with-python=/usr/bin/python
make -j4
sudo make install
Сборка gdbserver для android:
- 6.1. Загрузить android -sdk
cd ~
mkdir android
cd android
wget https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip
unzip commandlinetools-linux-6200805_latest.zip
export PATH=$PATH:~/android/tools/bin
sdkmanager --install "ndk;21.0.6113669" --sdk_root=~/android/
- 6.3. Создание автономной цепочки инструментов для NDK
cd ~/android/ndk/21.0.6113669/
./build/tools/make-standalone-toolchain.sh \
--toolchain=aarch64-linux-android-4.9 \
--install-dir=~/android/ndk_21
На этом этапе создайте автономную цепочку инструментов по адресу: ~ / android / ndk_21
- 6.4. Сконфигурируйте и соберите gdbserver для android
cd ~/gdb-9.1
mkdir build-android
cd build-android
export PATH=$PATH:~/android/ndk_21/bin
CC=aarch64-linux-android-gcc ../configure \
--target=aarch64-linux-android \
--host=aarch64-linux-android \
LDFLAGS="-static-libstdc++"
make -j4
Если вы получили ошибку, связанную с «source-highlight», добавьте --disable-source-highlight
флаг компиляции.
После завершения сборки gdbserver находится по адресу: gdb / gdbserver / gdbserver