這篇文章主要講,如何根據源碼,編譯後安裝到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.
至此,基本的調試工具已經悉數安裝到檔案系統中了。為後續使用者态調試打好基礎。