无法使用expat编译GDB以用于远程调试

问题描述 投票:0回答:5

我一直在尝试在 64 位 X86 Ubuntu 上编译 GDB 副本,以用于 ARM 设备的远程调试。这意味着使用 expat 编译 GDB;连接到远程调试器时,GDB 使用 XML 解析。以下是我尝试过的一些事情以及结果。

仅使用 --with-expat 进行编译

./configure --target=arm-none-eabi --with-expat 
make

....
checking whether to use expat... yes
checking for libexpat... (cached) no
configure: error: expat is missing or unusable
Makefile:9125: recipe for target 'configure-gdb' failed
....

使用 --with-libexpat-prefix 进行编译

ls -alg /usr/local/lib/*expat*
-rw-r--r-- 1 root 999128 Mar 20 23:55 /usr/local/lib/libexpat.a
-rwxr-xr-x 1 root    942 Mar 20 23:55 /usr/local/lib/libexpat.la
lrwxrwxrwx 1 root     17 Mar 20 23:55 /usr/local/lib/libexpat.so -> libexpat.so.1.6.0
lrwxrwxrwx 1 root     17 Mar 20 23:55 /usr/local/lib/libexpat.so.1 -> libexpat.so.1.6.0
-rwxr-xr-x 1 root 534224 Mar 20 23:55 /usr/local/lib/libexpat.so.1.6.0

./configure --target=arm-none-eabi --with-expat --with-libexpat-prefix=/usr/local/lib
make

....
checking whether to use expat... yes
checking for libexpat... (cached) no
configure: error: expat is missing or unusable
Makefile:9125: recipe for target 'configure-gdb' failed
....

我尝试过以我能想到的各种方式安装expat。上述库二进制文件来自 expat 使用 make install 的本地编译;我也做过:

apt-get install libexpat1-dev
apt-get install expat

两者都已经是最新版本。结果与上面相同;只有省略 --with-expat 和 --with-libexpat-prefix 才能编译。

欢迎提出建议。我怎样才能找到有关失败的更多信息 - 我怎样才能找出 make 过程如何/在哪里未能找到/批准外籍人士?

各位旅友(但我在这里没有找到有效的答案):

与 expat 一起构建 gdb

http://comments.gmane.org/gmane.comp.gdb.devel/29306

gdb 远程交叉调试失败,并显示“远程‘g’数据包回复太长”

xml linux debugging gdb arm
5个回答
3
投票

我做了两项更改,使其对我有用。

首先,我的

./configure
命令有点错误。而不是

./configure --target=arm-none-eabi --with-expat --with-libexpat-prefix=/usr/local/lib

应该是

./configure --target=arm-none-eabi --with-expat --with-libexpat-prefix=/usr/local/

因为前缀应该位于 include 和 lib 之上。从配置文件:

--with-expat            include expat support (auto/yes/no)
--with-libexpat-prefix[=DIR]  search for libexpat in DIR/include and DIR/lib

但我不确定这是否是真正的解决方案。我仍然遇到相同的编译错误,直到我不小心从 gdb 根目录中的

gdb
目录开始编译。让我完全明确地说:

root@scallion:~/gdb-arm-build/gdb-7.11# ls -alg
total 5016
drwxr-xr-x 16 root    4096 Mar 21 23:48 .
drwxr-xr-x  3 root    4096 Mar 20 16:54 ..
drwxr-xr-x  7 root   20480 Mar 21 23:48 bfd
-rw-rw-rw-  1  200  492650 Feb 24 01:55 ChangeLog
-rwxrwxrwx  1  200    7333 Feb 19  2015 compile
drwxr-xr-x  2 root    4096 Mar 20 16:54 config
-rwxrwxrwx  1  200   43614 Feb  9 19:19 config.guess
-rw-rw-rw-  1  200   25713 Feb  9 19:19 config-ml.in
-rwxrwxrwx  1  200   14916 Jun 11  2014 config.rpath
-rwxr-xr-x  1 root   31637 Mar 21 23:48 config.status
-rwxrwxrwx  1  200   36139 Feb  9 19:19 config.sub
-rwxrwxrwx  1  200  486119 Feb 24 01:55 configure
-rw-rw-rw-  1  200  113771 Feb 24 01:59 configure.ac
-rw-rw-rw-  1  200   18002 Jun 11  2014 COPYING
-rw-rw-rw-  1  200   35147 Jun 11  2014 COPYING3
-rw-rw-rw-  1  200    7639 Jun 11  2014 COPYING3.LIB
-rw-rw-rw-  1  200   25291 Jun 11  2014 COPYING.LIB
drwxr-xr-x  2 root    4096 Mar 20 16:54 cpu
-rwxrwxrwx  1  200   22464 Feb 19  2015 depcomp
-rw-r--r--  1  200    1887 Feb 24 01:59 djunpack.bat
drwxr-xr-x  2 root    4096 Mar 21 23:49 etc
drwxr-xr-x 27 root   36864 Mar 21 23:51 gdb **<<<<<<<< Here**
drwxr-xr-x 12 root    4096 Mar 20 16:54 include
-rwxrwxrwx  1  200   14675 Feb 19  2015 install-sh
drwxr-xr-x  2 root    4096 Mar 21 23:48 intl
drwxr-xr-x  4 root    4096 Mar 21 23:49 libdecnumber
drwxr-xr-x  4 root   12288 Mar 21 23:48 libiberty
-rw-rw-rw-  1  200  263820 Feb  9 19:19 libtool.m4
-rw-rw-rw-  1  200    1768 Jun 11  2014 ltgcc.m4
-rw-rw-rw-  1  200  249723 Jun 11  2014 ltmain.sh
-rw-rw-rw-  1  200    6126 Jun 11  2014 lt~obsolete.m4
-rw-rw-rw-  1  200   11950 Jun 11  2014 ltoptions.m4
-rw-rw-rw-  1  200    4372 Jun 11  2014 ltsugar.m4
-rw-rw-rw-  1  200     703 Jun 11  2014 ltversion.m4
-rw-rw-rw-  1  200    3909 Feb 19  2015 MAINTAINERS
-rw-r--r--  1 root  414118 Mar 21 23:48 Makefile
-rw-rw-rw-  1  200   30110 Feb  9 19:19 Makefile.def
-rw-rw-rw-  1  200 1719859 Feb 24 01:57 Makefile.in
-rw-rw-rw-  1  200   69660 Feb 24 01:55 Makefile.tpl
-rw-r--r--  1  200  736309 Feb 24 01:59 md5.sum
-rwxrwxrwx  1  200    6872 Feb 19  2015 missing
-rwxrwxrwx  1  200    2179 Jun 11  2014 mkdep
-rwxrwxrwx  1  200    3538 Feb 19  2015 mkinstalldirs
-rwxrwxrwx  1  200    2636 Feb 19  2015 move-if-change
drwxr-xr-x  5 root   12288 Mar 21 23:49 opcodes
drwxr-xr-x  7 root    4096 Mar 21 23:49 readline
-rw-rw-rw-  1  200    1719 Jun 11  2014 README
-rw-rw-rw-  1  200     961 Jun 11  2014 README-maintainer-mode
-rw-r--r--  1 root      13 Mar 21 23:48 serdep.tmp
drwxr-xr-x 33 root    4096 Mar 21 23:49 sim
-rwxrwxrwx  1  200    9150 Feb  9 19:19 src-release.sh
-rwxrwxrwx  1  200    2265 Jun 11  2014 symlink-tree
drwxr-xr-x  2 root    4096 Mar 20 16:54 texinfo
-rwxrwxrwx  1  200    6421 Feb 19  2015 ylwrap
drwxr-xr-x 14 root    4096 Mar 21 23:48 zlib

直到我从目录

make
运行
gdb-arm-build/gdb-7.11/gdb
才成功。
使用生成的gdb二进制文件,我现在可以连接到目标、停止、启动、查看寄存器、符号等。如果我发现我的编译有任何缺陷我会跟进,但现在我很好。

我不知道我在这里不明白什么,所以如果有人能阐明我犯了什么错误,我将不胜感激。


0
投票

在Ubuntu上 gdb 你的程序 <- this is not correct arm-linux-gnueabihf-gdb your-program <- this is correct remote gdb


0
投票

我遇到了完全相同的情况。虽然我无法给出问题的确切原因,但我相信这可能与 makeinfo 有关。当尝试从 gdb-7.6 升级到 gdb-7.11 时,我遇到了一些需要下载的东西;因此重新运行 configure 并 make 几次,中间安装软件包 长话短说:我删除了 gdb-7.11 文件夹,重新解压它,它与 expat 的链接很好: ./configure --with-read-line --with-expat


0
投票

gdb 8.3版本也有同样的问题。想了各种办法,还是不行。最后我用了10.2版本,一切问题都没有了。 上帝祝福你, 祝你好运。


0
投票

aarch64-gdb arm64位的配置命令行,构建

This is for debugging aarch64 running a FreeBSD operating system, but
you may substitute Linux in place of FreeBSD  I build this to debug a
Raspberry Pi 4B SBC,  using a [Tigard Board][1] running OpenOCD, then
using aarch64-gdb to connect over the OpenOCD software to that BCM2711
Here are 4 lines, that may help you test and build your own arm32-gdb
or aarch64-gdb for Linux or FreeBSD. I know I was looking for examples
on how to configure and build GDB for Arm64.  [Flirc Jeff Probe][2] is
another JTAG OpenOCD probe to look for your 3.3V ttl serial UART
connection to the target board using one port on the FT232H FTDI chip
and using the 2nd port to connect to JTAG pins.

FreeBSD.org/x86_64 pc 和 Aarch64 Raspberry Pi SBC 3/4/5 的 14.0-RELEASE 映像的位置

../configure --target=aarch64-freebsd  --enable-target=amd64  --program-prefix=aarch64-  --with-expat --with-libexpat-prefix=/usr/local/
  
../configure --target=aarch64-unknown-freebsd  --program-prefix=aarch64-  --with-expat --with-libexpat-prefix=/usr/local/
  
../configure --target=aarch64-elf-freebsd --program-prefix=aarch64-  --with-expat --with-libexpat-prefix=/usr/local/
  
../configure --target=arm-elf-linux --program-prefix=arm-  --with-expat --with-libexpat-prefix=/usr/local/

https://github.com/libexpat/libexpat/releases/download/R_2_6_1/expat-2.6.1.tar.gz

cd  /working_home_directory
mkdir -p ./src/gdb/gdb-14.2/build-aarch64-gdb

2024 年 3 月 10 日,17:05:32 构建 expat-2.6.1

su -
password: 
cd  src/gdb
wget -c https://github.com/libexpat/libexpat/releases/download/R_2_6_1/expat-2.6.1.tar.gz
gunzip expat-2.6.1.tar.gz
tar xvf expat-2.6.1.tar.gz
cd expat-2.6.1
./configure
make
sudo make install

现在配置并构建aarch64 GDB

cd  ../../gdb-14.2/build-aarch64-gdb
 ../configure --target=aarch64-elf-freebsd --program-prefix=aarch64-  --with-expat --with-libexpat-prefix=/usr/local/
make
sudo make install

如果你犯了错误,你将运行 make distclean 和 rm config.cache 文件

make distclean
find . -name "config.cache" -print
find . -name "config.cache" -print | xargs ls -lh 
find . -name "config.cache" -print | xargs ls -1 | xargs rm -v

重新运行 ../configure 行,然后 make ;须藤进行安装

要阅读的网址

我有一个调试探针,这是一个为 ARM 构建 GDB 的 bash 脚本

This is posted over on forums.raspberrypi.com

GhostBSD-Arm64 博客在主机 Linux 和运行 FreeBSD 的 aarch64 Raspberry Pi 4B 上构建 aarch64-gdb gnu 调试器

This is my personal blog post about porting GhostBSD.org  to Arm64.  I needed to build a version of aarch64-gdb to run on MX-Linux 21 Wildflower and that would debug FreeBSD aarch64 running on Raspberry Pi 4B, BCM2711  hardware single board computer.
© www.soinside.com 2019 - 2024. All rights reserved.