如何规避SS524V100 中遇到的GDB不可用的坑

如何规避SS524V100 中遇到的GDB不可用的坑 3559NVR-AI开发 2022-10-11 11:31:51 2539

在 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;
避坑总结
  1. GDB 编译最重要的是:要选择到 SDK 能兼容的 GDB 版本;

  2. 在编译过程中你可能会有遇到一些麻烦,如图:

    【问题描述】./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 对应的交叉工具链。
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
3559NVR-AI开发
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区