目录

前言

一、GDB失败经历总结

二、GDB成功经验分享

2.1 gdb下载官网:

2.2 选择gdb版本:

2.3 编译生成gdb:

2.4 运行测试gdb:

三、GDB编译Makefile

总结:

1. GDB 编译最重要的是:要选择到 SDK 能兼容的 GDB 版本;

2. 在编译过程中你可能会有遇到一些麻烦,解决方法如下:


前言

1、SDK版本:SS524V100_SDK_V2.0.1.0

2、服务器版本:ubuntu-18.04

在 Linux 开发中经常需要使用到 GDB 工具来调试程序。做芯片开发的,都知道当你的 SDK 工具链版本与 GDB 版本不兼容时,就会出现不可用的情况。接下来就由我带大家避开 SS524V100 GDB 不可用的坑吧。

一、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成功经验分享

2.1 gdb下载官网:

https://ftp.gnu.org/gnu/gdb/

2.2 选择gdb版本:

gdb-8.2.tar.gz

2.3 编译生成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

2.4 运行测试gdb:

  • 运行 gdb 有两种方式,一种是拷贝到板端运行,另外一种是直接挂载到服务器上运行(以挂载运行为例):
$ mount -t nfs -o nolock -o tcp 192.168.1.107:/home/nfs /home/
$ cd /home
$ ./gdb -vGNU gdb (GDB) 8.2Copyright (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-linuxall: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 对应的交叉工具链。

避开SS524V100 GDB的坑相关推荐

  1. 如何通过人工智能“避开”内容安全的“坑”?

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 10月16日,2018年 AIIA人工智能开发者大会在苏州举办.会议邀请了国内外人工智能产业知名人物.国家政府主管部门.行业内顶尖企业.知名学者代表 ...

  2. 『全球化产品』应该要避开的几个坑

    全球化的浪潮已经到来,越来越多的中国公司正在扬帆出海.根据AppAnnie的统计,目前Google Play中Top 10的移动APP开发公司,有4家来自中国.但是,海外市场相较于国内市场而言,也存在 ...

  3. 猎豹产品经理:「全球化产品」应该要避开的几个坑

    全球化的浪潮已经到来,越来越多的中国公司正在扬帆出海.根据AppAnnie的统计,目前Google Play中Top 10的移动APP开发公司,有4家来自中国.但是,海外市场相较于国内市场而言,也存在 ...

  4. 教你如何避开雪花算法的坑

    教你如何避开雪花算法的坑! https://gitee.com/automvc/bee/blob/master/src/main/java/org/teasoft/bee/distribution/G ...

  5. 公司取名避开这3个坑,通过率或可提升99%!

    点击上方蓝字关注我们 想注册企业开公司 取名是企业诞生的第一步 拉着亲朋好友想破脑袋.一顿讨论, 终于灵光乍现取了个好名字, 兴冲冲的跑去注册, 却惨被拒绝? 企业取名避开以下3个坑,提前准备3-5个 ...

  6. 注册公司避开这3个坑,通过率提升99%!

    想注册企业开公司?取个好名字是企业诞生的第一步!拉着亲朋好友想破脑袋,几番讨论,终于灵光乍现取了个满意的名字,兴冲冲跑去注册,却惨被拒绝?企业取名避开以下3个坑,提前准备3-5个备选名称,通过率或可提 ...

  7. 如何通过人工智能“避开”内容安全的“坑”? 1

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 10月16日,2018年 AIIA人工智能开发者大会在苏州举办.会议邀请了国内外人工智能产业知名人物.国家政府主管部门.行业内顶尖企业.知名学者代表 ...

  8. 手把手教你如何罗列提纲,避开这3个坑,提升写作效率50%

    在提笔写之前,我们在心里已经打好草稿要写什么内容,表达什么思想,然后让看到的人能收获到什么. 这就是列提纲,这是写出一篇文章的最基础结构. 第1个是主题要明确,要符合当代主流,一定是对别人有用 主题明 ...

  9. 做管理必须避开的六个坑

    作者:findyi,腾讯.360码农,前哒哒少儿英语技术VP,现任土豆教育CTO. 很多职场人的工作奋斗目标是走向管理岗.毕竟管理岗意味着会有更多的资源,更高的视野,也更能掌握自己的人生. 今天谈谈一 ...

最新文章

  1. iphone越狱神器
  2. Web Service之Soap请求响应内容中文编码解密
  3. 西南石油大学计算机科学院信息,梁宗文 - 西南石油大学 - 计算机科学学院
  4. Ubuntu安装screen
  5. wxWidgets随笔(11)-wxFrame类
  6. 使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示
  7. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十)斜度α地图的构造及算法...
  8. JavaScript闭包函数的理解与使用
  9. jieba和thulac使用比较
  10. php自适应在线电影影视网站系统源码
  11. XCode 4.2.1 项目的几个模版说明
  12. 并行编程走下神坛 将成为开发者基本技能?
  13. 软件工程(2018)第3次团队作业
  14. 如何在SQL Server中检查日期是否为假期
  15. 计算机网络学习socket--day3
  16. Java中的Random()函数 【转载】
  17. Android ViewModel
  18. 关于 html 中 table 表格 tr,td 的高度和宽度
  19. C语言闰年还是平年问题程序,c语言判断一年是不是闰年,编程错在哪呢?
  20. php-fpm前台,php-fpm配置文件详解

热门文章

  1. Ubuntu输入错误发出嘀一声难听声音
  2. 微信小程序-它是啥?了解了解
  3. css文本长英文换行
  4. Python Dictionary
  5. Windows下的bat文件的@echo off 作用?
  6. delphi修改电脑IP
  7. python应用---将py文件打包成exe应用程序
  8. Java基础4IO技术
  9. 计算机组成原理汇编程序实验,计算机组成原理汇编语言程序设计实验.ppt
  10. Ubuntu20.04如何解决QQ闪退问题