在 Linux 开发中经常需要使用到 GDB 工具来调试程序。做芯片开发的,都知道当你的 SDK 工具链版本与 GDB 版本不兼容时,就会出现不可用的情况。接下来就由我带大家避开 SS524V100 GDB 不可用的坑吧。
开发环境1、SDK版本:SS524V100_SDK_V2.0.1.0
2、服务器版本:ubuntu-18.04
GDB失败经历总结根据官方文档推荐下载的 gdb-10.2 版本使用,可是当你编译、移植,一整套流程下来,最后运行时发现,报错如下:
$ ./gdb -v relocation error: symbol _ZTINSt13__future_base12_Result_baseE, version GLIBCXX_3.4.23 not defined in file libstdc++.so.6 with link time reference看到这种情况当然很纳闷啦,然后就是各种库的安装和各种手段的尝试过程 。。。。。
最终发现出现这种问题,一般都是工具链与 GDB 版本不兼容导致的。嘻嘻,最终能找到问题也不错呀,那就让我们避开一些坑坑洼洼,继续往下看吧!
GDB成功经验分享gdb下载官网:下载地址:https://ftp.gnu.org/gnu/gdb/
选择gdb版本:gdb-8.2.tar.gz
编译生成gdb:下载好了 gdb-8.2 版本的源码后,拷贝到我们的 Linux 服务器里编译:
$ mkdir -p /home/SS524V100_SDK_V2.0.1.0/osdrv/tools/board/gdb/ $ cd /home/SS524V100_SDK_V2.0.1.0/osdrv/tools/board/gdb/ $ cp /share/gdb-8.2.tar.gz ./ $ cp /share/Makefile ./ $ make这个编译过程大概需要15分钟左右,编译完成后生成的gdb程序是在编译目录下的 install/bin/
$ ls install/bin/ gcore gdb gdb-add-index gdbserver run 运行测试gdb:运行 gdb 有两种方式,一种是拷贝到板端运行,另外一种是直接挂载到服务器上运行(以挂载运行为例):
$ mount -t nfs -o nolock -o tcp 192.168.1.107:/home/nfs /home/ $ cd /home $ ./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.好了,如果执行到这一步就证明你的 GDB 已经完全可以正常使用了。
GDB编译Makefile在 “2.3编译生成gdb” 的Makefile,我放在这里给大家了(直接复制使用即可):
TOOLS_TOP_DIR := $(shell pwd) TOOL_TAR_BALL := gdb-8.2.tar.gz TOOL_NAME := gdb-8.2 TOOL_BUILD := build TOOL_INSTALL := install OSDRV_CROSS ?= arm-mix410-linux all: tar -xf $(TOOL_TAR_BALL); mkdir -p $(TOOLS_TOP_DIR)/$(TOOL_BUILD)/; pushd $(TOOLS_TOP_DIR)/$(TOOL_BUILD)/; \ $(TOOLS_TOP_DIR)/$(TOOL_NAME)/configure –host=$(OSDRV_CROSS) –prefix=$(TOOLS_TOP_DIR)/$(TOOL_INSTALL); \ make -j16; \ make install;\ popd; .PHONY: clean clean: make -C $(TOOLS_TOP_DIR)/$(TOOL_BUILD)/ clean; .PHONY: distclean distclean: rm $(TOOLS_TOP_DIR)/$(TOOL_NAME) -rf; rm $(TOOLS_TOP_DIR)/$(TOOL_BUILD) -rf; rm $(TOOLS_TOP_DIR)/$(TOOL_INSTALL) -rf;GDB 编译最重要的是:要选择到 SDK 能兼容的 GDB 版本;
在编译过程中你可能会有遇到一些麻烦,如图:
【问题描述】./bfd: No such file or directory 【问题原因】原因有两个如下: 其一:可能你工具链是使用 “非 root 权限” 安装的,而你却在(sudo) root 权限下编译了gdb; 其二:可能 Makefile –> OSDRV_CROSS ?= arm-mix410-linux 这个工具链,你并没有修改为自己 SDK 对应的工具链版本。 【解决方法】针对以上原因,此处给出了相应的解决方法: 针对其一:若在 (sudo) root 权限下编译gdb,则需要临时配置环境变量:source /etc/profile; 针对其二:修改上边 Makefile –> OSDRV_CROSS 为自己 SDK 对应的交叉工具链。免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:如何规避SS524V100 中遇到的GDB不可用的坑-二手房首付解押注意事项 https://www.yhzz.com.cn/a/9732.html