ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver

gdb是一款开源的、强大的、跨平台的程序调试工具。主要用于在程序运行时对程序进行控制和检查,如设置断点、单步执行、查看变量值、修改内存数据等,从而帮助开发者定位和修复代码中的错误。
gdbserver则是GDB的一个辅助工具,主要用于调试嵌入式系统或者没有图形界面的目标系统上的程序。GDBServer在目标设备上运行,将目标程序的状态信息通过网络发送给宿主机上的GDB,使GDB能够像调试本地程序一样调试远程的目标程序。这样,开发人员就可以在宿主机上使用GDB的各种功能,而不需要在目标设备上安装和运行复杂的调试环境。
说明:本教程适用于ubuntu环境下交叉编译gdbserver,目标架构为aarch64小端。

一、准备阶段

根据需求,准备gdb源代码和aarch64-linux-gnu交叉编译工具链。
博主选择的gdb源代码以及aarch64-linux-gnu交叉编译工具链分别是,gdb8.3gcc-arm-8.3-2019.02-x86_64-aarch64-linux-gnu.tar.xz(aarch64小端)

gdb源代码地址:https://ftp.gnu.org/gnu/gdb/

在这里插入图片描述

交叉编译工具链下载地址:https://developer.arm.com/downloads/-/gnu-a

在这里插入图片描述

注意:在选择交叉编译工具链时,一定要明确目标架构大小端。

二、编译安装gdb

首先通过configure配置gdb编译选项,再进行编译和安装。

(一)、配置gdb编译选项

cd gdb8.3
./configure --target=aarch64-linux-gnu --prefix=/home/hhl/gdbserver
参数说明:--target 目标架构--prefix 自定义gdb编译安装路径

在这里插入图片描述

(二)、编译gdb

cd gdb8.3
make -j8
参数说明:--j8 并行编译(8

在这里插入图片描述

(三)、安装gdb

cd gdb8.3
make install

在这里插入图片描述
在这里插入图片描述

三、交叉编译gdbserver
(一)、配置gdbserver编译选项

由于gdbserver需要移植到目标环境中运行,为了避免环境的影响,因此采取静态编译的方式。

cd gdb8.3/gdb/gdbserver
LDFLAGS="-static" ./configure --target=aarch64-linux-gnu --host=aarch64-linux-gnu  --disable-shared --enable-static 
参数说明:LDFLAGS="-static"  静态编译--target 目标架构--prefix 自定义gdb编译安装路径--disable-shared --enable-static 可选参数,静态编译。

(二)、交叉编译gdbserver

使用绝对路径正确配置gcc和g++的路径。

make CC=/home/hhl/gcc-arm-8.3-2019.02-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/home/hhl/gcc-arm-8.3-2019.02-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ -j8
参数说明:CC gcc路径cXX g++路径

在这里插入图片描述

交叉编译成功后,gdbservergdb8.3/gdb/gdbserver路径下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密态计算,大模型商用数据瓶颈的新解法?

大数据产业创新服务媒体 ——聚焦数据 改变商业 大模型迈向产业的深度应用,首要挑战是高质量数据供给和安全流通。正如在今年的世界人工智能大会上,产学研届多位专家达成的共识是,数据决定了AI能力的上限。 在实践中,行业大模型难…

C#创建windows服务程序

步骤 1: 创建Windows服务项目 打开Visual Studio。选择“创建新项目”。在项目类型中搜索“Windows Service”并选择一个C#模板(如“Windows Service (.NET Framework)”),点击下一步。输入项目名称、位置和其他选项,然后点击“创…

Pyecharts绘制热力图的说明+代码实战

引言 热力图在数据可视化中是一种强大的工具,可以直观地展示数据的分布情况和变化趋势。Pyecharts是一个基于Echarts的Python可视化库,提供了丰富的图表类型,包括热力图。在本文中,我们将深入探讨Pyecharts绘制多种炫酷热力图的参…

Qt 创建的窗口一闪而过【已解决】

Qt 创建的窗口一闪而过 引言一、详细的解决方案 - 附代码二、参考博文 引言 创建的窗口一闪而过,就是创建完立马被销毁了,常见情况是在一个函数中创建窗口并show() - 即创建在了栈上,函数结束局部变量(窗口)自动被释放。主流的解决方法有两种…

每日刷题(二分查找,匈牙利算法,逆序对)

目录 1.Sarumans Army 2.Catch That Cow 3.Drying 4.P3386 【模板】二分图最大匹配 5. Swap Dilemma 1.Sarumans Army 3069 -- Sarumans Army (poj.org) 这道题就是要求我们在给的的位置放入 palantir,每个 palantir有R大小的射程范围,要求求出最少…

生产订单执行明细表二开增加字段

文章目录 生产订单执行明细表二开增加字段业务背景业务需求方案设计详细设计和实现标准报表引入到应用标准报表和过滤扩展添加字段创建插件,挂载插件新建类库 Krystal.K3.SCGL.App.Report,添加引用创建类,继承报表原插件重写BuilderReportSql…

【微服务】Spring Cloud中如何使用Eureka

文章目录 强烈推荐引言主要功能Eureka 的架构使用示例Eureka Server 配置Eureka Client 配置示例服务服务发现调用示例 Spring Cloud如何实现服务的注册?1. 搭建 Eureka 服务注册中心2. 配置服务注册到 Eureka3. 验证服务注册 总结应用场景1. 动态服务发现2. 负载均衡3. 服务治…

基于Java中的SSM框架实现水稻朔源信息系统项目【项目源码】

基于Java中的SSM框架实现水稻朔源信息系统演示 SSM框架 SSM框架是基于Spring、SpringMVC以及Mybatis实现的针对JAVA WEB端应用的开发框架,通过SSM框架结构可以实现以上三种框架的优点集合,从而实现更加高效便捷的系统开发和呈现。该框架结构通过Spring框…

PolarisMesh源码系列——服务如何注册

前话 PolarisMesh(北极星)是腾讯开源的服务治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题,针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。 PolarisMesh 官网&am…

280个地级市金融集聚水平数据(2006-2022年)

2006年-2022年280个地级市金融集聚水平数据整理资源-CSDN文库 金融集聚水平:衡量地级市金融发展的新维度 金融集聚水平是衡量一个地区金融发展程度的重要指标,它反映了金融机构、金融资源、金融服务在特定时间和空间的集中程度。这一指标的评估可以从多…

视语坤川大模型智能体平台亮相2024世界人工智能大会

7月4日-7月7日,以“以共商促共享以善治促善智”为主题的2024世界人工智能大会(WAIC 2024)在上海举办,世界顶级专家学者、知名企业代表、政界人士、高校组织等齐聚上海,共商发展、共话未来。 作为大会的重磅环节——昇…

【笔记】Android V 应用SDK升级适配和问题

说明 随着Google释放的Android版本,系统升级SDK到35,应用也需要升级上去,不然会报错。 Android Studio Jellyfish | 2023.3.1 | Android Developers Android Studio 预览版中的新功能 | Android Developers 当前版本的Android Studio

Elasticsearch:深度学习与机器学习:了解差异

作者:来自 Elastic Elastic Platform Team 近年来,两项突破性技术一直站在创新的最前沿 —— 机器学习 (machine learning - ML) 和深度学习 (deep learning - DL)。人工智能 (AI) 的这些子集远不止是流行语。它们是推动医疗保健、金融等各行业进步的关键…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意:B树中B不是代表二叉树(binary),而是代表平衡(balance),因为B树是从最早的平衡二叉树演化而来,但是B树不是一个二叉树。 B树的高度一般在2~…

es是如何处理索引数据的变动的?

1 概述 es是如何处理索引数据的变动的? 或者说索引数据变动时,es会执行哪些操作? refresh、fsync、merge 和 flush 操作有何作用? es是如何确保即使es发生宕机数据也不丢失的? 在回答上述问题前,可以先…

文件操作和IO流

前言👀~ 上一章我们介绍了多线程进阶的相关内容,今天来介绍使用java代码对文件的一些操作 文件(file) 文件路径(Path) 文件类型 文件操作 文件系统操作(File类) 文件内容的读…

leetcode--恢复二叉搜索树

leetcode地址:恢复二叉搜索树 给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输出:[3,1,null…

AirPods Pro新功能前瞻:iOS 18的五大创新亮点

随着科技的不断进步,苹果公司一直在探索如何通过创新提升用户体验。iOS 18的推出,不仅仅是iPhone的一次系统更新,更是苹果生态链中重要一环——AirPods Pro的一次重大升级。 据悉,iOS 18将为AirPods Pro带来五项新功能&#xff0…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象会相应地作出反应。 在观察者模式中有如下角色: Subject(抽象主题/被观察者&#xf…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Spring框架从入门到学精(全) 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…