这篇文章主要讲,如何根据源码,编译后安装到nanopim3的文件系统中。把strace和gdb安装好了之后,那么linux用户态的调试手段基本准备就绪了。本文使用的 源码,基本都是接近最新版本的。
- nanopim3文件系统支持strace
strace源码路径https://github.com/strace/strace/releases
下载源码包strace-5.0.tar.xz,解压进入strace根目录/xxx/strace-5.0,
编译前配置交叉编译工具链和生成路径如下:
./configure --prefix=/home/jqh/work/pkg_strace --host=arm-linux CC=arm-linux-gcc
然后直接开始编译make -j8;安装make install;
然后查看安装目录编译出来的strace文件,
[email protected]:~/work/pkg_strace$ ls -R
bin share
./bin:
strace strace-graph strace-log-merge
./share/man:
man1
将strace可执行文件直接拷贝到文件系统中,运行,发现缺少动态库librt.so.1和libpthread.so.0。说明之前做的文件系统依赖的动态库还不够全,现在需要将缺少的这两个动态库拷贝到/lib目录下。
然后再次执行strace -help命令发现已经能够正常使用。
[[email protected] ~]#strace -help
usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...
[-a column] [-o file] [-s strsize] [-P path]...
-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]
-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
查看一下版本,
[[email protected] ~]#strace -V
strace -- version 5.0
Copyright (c) 1991-2019 The strace developers <https://strace.io>.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Optional features enabled: (none)
这里增加strace命令是为了后续调试用户态程序。构建基本的调试命令和手段。
- nanopi3文件系统支持gdb
Gdb源码路径ftp://sourceware.org/pub/gdb/snapshots/current/
本文下载的是gdb-8.2版本的代码,解压进入gdb-8.2根目录/home/jqh/work/gdb-8.2,
编译前配置交叉编译工具链和安装路径:
./configure --prefix=/home/jqh/work/gdb_dir --host=arm-linux CC=arm-linux-gcc
然后直接编译make -j4;安装make install;
查看安装目录:
bin include lib share
将bin目录下的文件拷贝到文件系统中,运行gdb,并查看版本。
《如果缺少库文件,可以使用命令
[email protected]:~/work/nanopim3_uboot$ arm-linux-ldd --root /home/jqh/work/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root nanopi3_rootfs_V1/usr/bin/gdb
libdl.so.2 => /lib/libdl.so.2 (0xdeadbeef)
libc.so.6 => /lib/libc.so.6 (0xdeadbeef)
ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0xdeadbeef)
libm.so.6 => /lib/libm.so.6 (0xdeadbeef)
,来查看可执行程序依赖哪些库文件,然后参考前文,在对应的路径去取库文件》
[[email protected] ~]#gdb -v
GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
至此,基本的调试工具已经悉数安装到文件系统中了。为后续用户态调试打好基础。