GDB。编译gdbserver出现错误

版本:gdb-12.1
编译gdbserver时出现如下错误:

我简单编译了一下,以下作为参考;

# 下载源码
wget http://ftp.gnu.org/gnu/gdb/gdb-12.1.tar.xz

# 解压
tar -xvf gdb-12.1.tar.xz

# 进入 gdb 源码目录
cd gdb-12.1

# 配置交叉编译环境,按自己的路径来
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/opt/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

# 安装 gmp 库
sudo apt install libgmp-dev

# 编译生成 arm-buildroot-linux-gnueabihf-gdb
./configure --target=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
make -j4
make install

# 编译生成 arm 格式的 gdbserver
make distclean
./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
make

# 此时会有报错,找不到 gmp 库,不用管;
make install

生成的 bin 文件都在 tmp 目录下;

其实在 buildroot 中也有 gdb,在 package/gdb 目录下,可以参考一下 buildroot 是如何编译的;

参考博客

1 个赞

从你的操作看不用进入gdbserver编译?

  1. 我的操作没有进 gdbserver 目录编译;
  2. 尝试过进 gdbserver 编译,它会到上级 gdbsupport 目录链接一个库文件;但链接不成功,或许是需要该库是 arm 格式的;
  3. 方法仅供参考,你自己试试就知道了。
1 个赞


为什么host和Target和上面的意思相反了?不应该是-host生成的是gdb吗?

我也不懂这些概念,你自己实验下就知道了;

HOST端生成的是GDB,一般情况下 我们使用的交叉编译工具链 的GDB全名是 arm-linux-gnueabihf-gdb 通过这个 Host端的 arm-linux-gnueabihf-gdb 去连接 target(目标开发板)的gdbserver进行远程调试。

也就是说 gdbserver是在开发板上用的,而GDB(arm-linux-gnueabihf-gdb) 是在我们ubuntu上用的。