我正在尝试从源代码交叉编译一个版本的 GDB 服务器,用于MIPS32
架构。我正在使用x86_64机。
我正在使用 BuildrootuClibc
编译器进行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
我读到您可以删除 GDB 服务器中的lthread_db
依赖项makefile
但是我需要调试线程应用程序。
如何使用 Buildroot 交叉编译工具集交叉编译 GDB 服务器以用于MIPS32
架构?
既然你无论如何都要用 Buildroot 构建工具链,最简单的方法是用 Buildroot 构建 gdbserver。
- 确保在工具链菜单中启用了线程库调试(
BR2_PTHREAD_DEBUG
(。 - 从"目标包"->"调试"中选择"gdb"。 然后默认选择 gdb 服务器。您不需要完整的 gdb。
- 您显然想要一个静态可执行文件,因此请从"生成"选项 -> 库中选择"仅静态"。
这应该会给你一个静态链接的gdbserver可执行文件。
请注意,如果更改工具链选项(线程库调试、静态库(,则必须使用make clean; make
进行完全重建。