Buildroot Cross Compiling GDB Server for MIPS32



我正在尝试从源代码交叉编译一个版本的 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进行完全重建。

最新更新