我一直在尝试在 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 过程如何/在哪里未能找到/批准外籍人士?
各位旅友(但我在这里没有找到有效的答案):
我做了两项更改,使其对我有用。
首先,我的
./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二进制文件,我现在可以连接到目标、停止、启动、查看寄存器、符号等。如果我发现我的编译有任何缺陷我会跟进,但现在我很好。
我不知道我在这里不明白什么,所以如果有人能阐明我犯了什么错误,我将不胜感激。
在Ubuntu上 gdb 你的程序 <- this is not correct arm-linux-gnueabihf-gdb your-program <- this is correct remote gdb
我遇到了完全相同的情况。虽然我无法给出问题的确切原因,但我相信这可能与 makeinfo 有关。当尝试从 gdb-7.6 升级到 gdb-7.11 时,我遇到了一些需要下载的东西;因此重新运行 configure 并 make 几次,中间安装软件包 长话短说:我删除了 gdb-7.11 文件夹,重新解压它,它与 expat 的链接很好: ./configure --with-read-line --with-expat
gdb 8.3版本也有同样的问题。想了各种办法,还是不行。最后我用了10.2版本,一切问题都没有了。 上帝祝福你, 祝你好运。
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
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
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
find . -name "config.cache" -print
find . -name "config.cache" -print | xargs ls -lh
find . -name "config.cache" -print | xargs ls -1 | xargs rm -v
我有一个调试探针,这是一个为 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.