我使用 GDB 运行交叉调试会话。GDB 配置了 --with-sysroot 选项,文档中对此进行了描述。我的应用程序使用如下共享库。
代码:
libpthread.so.0 => /lib/libpthread.so.0 (0x40026000)
libm.so.6 => /lib/libm.so.6 (0x40046000)
libdl.so.2 => /lib/libdl.so.2 (0x400b9000)
librt.so.1 => /lib/librt.so.1 (0x400c4000)
libts-0.0.so.0 => /usr/lib/libts-0.0.so.0 (0x400d3000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4015f000)
libz.so.1 => /usr/lib/libz.so.1 (0x401d3000)
libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x401ee000)
库 pthread、libdl、... 在我的工具链中找到,由set sysroot、--with- sysroot和set solib-absolute-path 声明库 libts、libz、... 在我的共享库的附加路径中可用, 在会话中用set solib-search-path声明
对于库 libfreetype、libjpeg,会发生以下错误:
102,416 &"警告: `/usr/lib/libfreetype.so.6': 未知的共享库架构与目标架构 arm 不兼容。\n"
102,416 =library-loaded,id="/usr/lib/libfreetype.so .6",target-name="/usr/liblibfreetype.so.6",host-name="/usr/lib/libfreetype.so.6",symbols-loaded="0",thread-group="i1 "
GDB仍然使用主机 rootfs 库的原因,一旦在工具链中找不到,并且在主机 rootfs 中可用。它不关心我用set solib-search-path声明的附加路径
我用 --with-sysroot 配置了 GDB,声明了额外的set sysroot ,set solib-search-path,set solib-absolute-path(没关系 set sysroot 的别名)。
在文档中,--prefix将 GDB 配置为自动获取 sysroot,但为什么这比--with-sysroot更高?
GDB 是否使用命令sysroot、host- sysroot 、solib-search-path?
我想告诉 GDB 什么,不要使用主机 rootfs ?