嵌入式Linux系统开发板搭建GDB调试环境

QEMU仿真环境下的嵌入式Linux驱动开发:从零构建虚拟ARM开发板 嵌入式Linux驱动开发是连接硬件与操作系统的核心技术,其核心在于理解设备与内核的交互原理。传统学习路径依赖物理开发板,常因硬件差异、环境配置和调试困难而受阻。通过利用QEMU这一开源机器模拟器,可以在标准x86计算机上虚拟出完整的ARM架构系统,包括CPU、内存及各类外设,从而构建一个高度一致、安全且零成本的纯软件仿真环境。该方案的技术价值在于剥离了硬件不确定性,让开发者能聚焦于驱动框架本身,如字符设备驱动中file_operations结构体的实现、内核模块的编译加载流程以及通过copy_to_user 阅读详情

GDB是什么

GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。

创建安装目录

cd ~
mkdir arm-linux
cd ~/arm-linux
mkdir -p gdb/src
mkdir -p gdb/build
export SRCDIR=~/arm-linux/gdb/src
export BUILDDIR=~/arm-linux/gdb/build
export TARGET=arm-linux-gnueabi
export PREFIX=/usr/local/arm/4.8.2
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin

GDB源码下载

cd ~/arm-linux/gdb/src
wget http://ftp.gnu.org/gnu/gdb/gdb-8.3.1.tar.gz
tar -xvzf gdb-8.3.1.tar.gz

编译

cd ~/arm-linux/gdb/build
~/arm-linux/gdb/src/gdb-8.3.1/configure --prefix=/usr/local/arm/4.8.2--target=arm-linux-gnueabi
make

常见错误1

...
/bin/bash ./libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../../src/gdb-7.6.1/bfd -I. -I../../../src/gdb-7.6.1/bfd -I../../../src/gdb-7.6.1/bfd/../include  -DHAVE_bfd_elf32_littlearm_vec -DHAVE_bfd_elf32_bigarm_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec  -DBINDIR='"/usr/local/arm/4.8.2/bin"'  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT opncls.lo -MD -MP -MF .deps/opncls.Tpo -c -o opncls.lo ../../../src/gdb-7.6.1/bfd/opncls.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../../src/gdb-7.6.1/bfd -I. -I../../../src/gdb-7.6.1/bfd -I../../../src/gdb-7.6.1/bfd/../include -DHAVE_bfd_elf32_littlearm_vec -DHAVE_bfd_elf32_bigarm_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"/usr/local/arm/4.8.2/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT opncls.lo -MD -MP -MF .deps/opncls.Tpo -c ../../../src/gdb-7.6.1/bfd/opncls.c -o opncls.o
In file included from ../../../src/gdb-7.6.1/bfd/opncls.c:26:0:
../../../src/gdb-7.6.1/bfd/opncls.c: In function ‘bfd_fopen’:
./bfd.h:529:65: error: right-hand operand of comma expression has no effect [-Werror=unused-value]
 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
                                                                 ^
../../../src/gdb-7.6.1/bfd/opncls.c:263:5: note: in expansion of macro ‘bfd_set_cacheable’
     bfd_set_cacheable (nbfd, TRUE);
     ^
cc1: all warnings being treated as errors
Makefile:1607: recipe for target 'opncls.lo' failed
make[4]: *** [opncls.lo] Error 1
make[4]: Leaving directory '/home/weisf/arm-linux/build/gdb/bfd'
Makefile:1649: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/weisf/arm-linux/build/gdb/bfd'
Makefile:1135: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/weisf/arm-linux/build/gdb/bfd'
Makefile:2579: recipe for target 'all-bfd' failed
make[1]: *** [all-bfd] Error 2
make[1]: Leaving directory '/home/weisf/arm-linux/build/gdb'
Makefile:828: recipe for target 'all' failed
make: *** [all] Error 2

原因:
比较新的编译器如gcc4.5 以上的编译器,对 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE) 这样的语法不支持
解决方案:
解决方法是加上忽略告警的选项 --disable-werror:

make clean
~/arm-linux/gdb/src/gdb-8.3.1/configure --prefix=/usr/local/arm/4.8.2 --target=arm-linux-gnueabi --disable-werror
make

常见错误2

make[3]: Entering directory '/home/vv/arm-linux/gdb/build/gdb'
make[4]: Entering directory '/home/vv/arm-linux/gdb/build/gdb/doc'
/home/vv/arm-linux/gdb/src/gdb-9.1/missing makeinfo --split-size=5000000 --split-size=5000000   -I /home/vv/arm-linux/gdb/src/gdb-9.1/gdb/doc/../../readline/readline/doc -I /home/vv/arm-linux/gdb/src/gdb-9.1/gdb/doc/../mi -I /home/vv/arm-linux/gdb/src/gdb-9.1/gdb/doc \
	-o gdb.info /home/vv/arm-linux/gdb/src/gdb-9.1/gdb/doc/gdb.texinfo
/home/vv/arm-linux/gdb/src/gdb-9.1/missing: 81: /home/vv/arm-linux/gdb/src/gdb-9.1/missing: makeinfo: not found
WARNING: 'makeinfo' is missing on your system.
         You should only need it if you modified a '.texi' file, or
         any other file indirectly affecting the aspect of the manual.
         You might want to install the Texinfo package:
         <http://www.gnu.org/software/texinfo/>
         The spurious makeinfo call might also be the consequence of
         using a buggy 'make' (AIX, DU, IRIX), in which case you might
         want to install GNU make:
         <http://www.gnu.org/software/make/>
Makefile:490: recipe for target 'gdb.info' failed
make[4]: *** [gdb.info] Error 127
make[4]: Leaving directory '/home/vv/arm-linux/gdb/build/gdb/doc'
Makefile:2006: recipe for target 'subdir_do' failed
make[3]: *** [subdir_do] Error 1
make[3]: Leaving directory '/home/vv/arm-linux/gdb/build/gdb'
Makefile:1651: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/vv/arm-linux/gdb/build/gdb'
Makefile:9563: recipe for target 'all-gdb' failed
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory '/home/vv/arm-linux/gdb/build'
Makefile:851: recipe for target 'all' failed
make: *** [all] Error 2

解决方案:

sudo apt install texinfo

常见错误3

Configuring in ./gdb
configure: loading cache ./config.cache
configure: error: `MAKEINFO' has changed since the previous run:
configure:   former value:  `/home/vv/arm-linux/gdb/src/gdb-9.1/missing makeinfo --split-size=5000000'
configure:   current value: `makeinfo --split-size=5000000'
configure: error: in `/home/vv/arm-linux/gdb/build/gdb':
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm ./config.cache' and start over
Makefile:9533: recipe for target 'configure-gdb' failed
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory '/home/vv/arm-linux/gdb/build'
Makefile:851: recipe for target 'all' failed
make: *** [all] Error 2

Ubuntu嵌入式Linux开发环境搭建指南 嵌入式Linux开发是物联网和智能设备领域的核心技术之一,其核心在于构建稳定高效的交叉编译环境。Ubuntu作为最流行的Linux发行版,凭借其完善的APT包管理系统和长期支持(LTS)版本,成为嵌入式开发的首选平台。通过配置ARM交叉编译工具链和QEMU模拟器,开发者可以在x86主机上为ARM架构设备构建应用程序和内核。典型的嵌入式开发工作流包括版本控制、自动化构建和远程调试,这些实践能显著提升开发效率。Ubuntu LTS版本提供的5年支持周期特别适合嵌入式产品长生命周期需求,而其丰富的社区资源则能帮助 阅读详情

相关推荐

手把手教你用GDB和JTAG调试瑞芯微RK3568开发板,从U-Boot到内核启动的完整排错流程

本文详细介绍了使用GDB和JTAG调试瑞芯微RK3568开发板的完整流程,涵盖从U-Boot到内核启动的全方位排错方法。通过硬件调试环境搭建、OpenOCD配置、U-Boot和Linux内核调试等实战步骤,帮助开发者快速定位和解决启动问题,特别适合ARM64架构的嵌入式开发人员。

weixin_30399821的博客 161

GDB调试-从安装到使用

gdb 工具是 GNU 项目调试器,基于命令行。和其他的调试器一样,我们可以使用 gdb 来一行行的运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是 UNIX/LINUX 操作系统下强大的程序调试工具。对于一般的Linux桌面系统(例如,ubuntu、centos等),我们可以直接运行gdb来调试程序。

ZBraveHeart的博客 6901

RK3568嵌入式Linux Qt交叉编译环境搭建与远程调试实战

在嵌入式Linux开发中,交叉编译是连接高性能开发主机与资源受限目标板的核心技术。它的原理是在x86架构的宿主机上,通过aarch64工具链生成ARM架构可执行文件,从而解决CPU指令集不兼容、运行库缺失等典型问题。掌握交叉编译,不仅能大幅提升编译效率,还能为Qt等图形界面程序提供完整的aarch64运行库。在实际工程中,开发者常需在Ubuntu下为RK3568等ARM平台搭建Qt交叉编译环境,并配置Qt Creator实现远程部署与调试。本文以RK3568开发板为例,从工具链安装、Qt源码交叉编译、Kit

weixin_34166472的博客 457

GDB的安装与在嵌入式平台的使用

GDB在嵌入式平台的应用

u010584870的博客 1830

不用开发板也能学嵌入式?QEMU模拟vexpress-a9开发板详细教程

本文详细介绍了如何使用QEMU模拟器零成本学习嵌入式开发,重点讲解了vexpress-a9开发板的虚拟化配置流程。从工具链安装到U-Boot、Linux内核和根文件系统的构建,再到系统启动与调试,提供了完整的实战指南,帮助开发者无需硬件即可掌握ARM开发核心技术。

weixin_30701575的博客 303

龙芯2K0301开发板环境搭建与MIPS64嵌入式开发指南

嵌入式开发是物联网和工业控制领域的关键技术,其核心在于构建稳定可靠的开发环境。MIPS64架构作为RISC指令集的代表,在低功耗嵌入式场景中具有独特优势。龙芯2K0301处理器基于MIPS64架构,主频可达1GHz,适用于工业级应用。开发环境搭建涉及交叉编译工具链配置、U-Boot移植、Linux内核裁剪等关键技术,其中工具链兼容性和设备树配置是常见难点。通过TFTP/NFS网络调试和BusyBox最小系统构建,开发者可以快速搭建嵌入式Linux开发环境。本文以龙芯2K0301龙邱核心板为例,详细讲解从硬件

weixin_32349093的博客 127

构建gdb+gdbserver调试arm程序

构建gdb+gdbserver调试arm程序 时间:2007-05-31 12:18:40来源:Linux联盟收集整理作者: 嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。 ...

weixin_34313182的博客 394

嵌入式GDB调试环境搭建与使用

1. GDB 简介

Louis@L.M.的博客 5116

configure时出现错误:former value和current value不一样

./configure没有更新造成的 configure: error: `CC' has changed since the previous run: configure: former value: `x86_64-redhat-linux-gcc' configure: current value: `/home/lixuezd/local/gcc/./gcc/xgcc -B/hom

f_066的专栏 6133

通过vscode进行嵌入式linux arm开发板gdb调试

通过vscode进行嵌入式linux arm开发板gdb调试 gdb远程调试,嵌入式gdb调试,arm linux gdb调试, vscode远程调试, vscode arm gdb 调试

weixin_43398250的博客 5836

嵌入式GDB调试搭建与使用

文件夹下,比如笔者的就是/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin。gcc-linaro-4.9.4- 2017.01-x86_64_arm-linux-gnueabihf/bin,如图。目标机交叉编译器前缀,也就是你所使用的交叉编译器前缀,比如在本教程中就设置为 arm-linux-gnueabihf。”命令,程序就会持续不断的运行,开发板中就会不断的打印出信息,如图 B3.3.2.7。

qq_28576837的博客 1839

GDB调试开发板步骤及常用命令参考

gdb调试开发板步骤及常用命令

pupuhetu的博客 969

GEC6818 嵌入式 Linux 开发实战:从 uboot 编译到交叉调试

嵌入式 Linux 开发中,交叉编译与系统启动链路是核心基础。以 ARM Cortex-A53 处理器为例,从 uboot 引导、内核裁剪到根文件系统制作,每一步都影响系统能否正常启动。掌握 NFS 挂载、tftp 传输和 gdbserver 调试,能显著提升开发效率。这些技术广泛应用于物联网设备、工业控制和智能终端。本文以 GEC6818 开发板为例,详细讲解从裸板到系统跑通的全流程,包括 uboot 编译、内核设备树修改、busybox 根文件系统制作,以及串口、网卡、eMMC 外设调通和常见启动故障排

weixin_29159127的博客 221

搭建嵌入式linux应用程序调试环境

使用gdb搭建嵌入式Linux调试环境,使用网络与开发板通信,调试应用程序 一、下载gdb源码 下载地址:ftp://ftp.gnu.org/gnu/gdb/ 我使用的版本为:gdb-7.7.1.tar.gz 二、编译gdb client (1)tar xvzf gdb-7.7.1.tar.gz (2)./configure --target=arm-linux --prefix=

srf1986的专栏 2272

大疆mini 3 pro rtmp推流(带屏遥控器不支持)windows

大疆mini 3 pro无人机rtmp推流(带屏遥控器不支持)至windows电脑

xbsigeibwkouvfcj的博客 3431

EPS+ArcGIS+CASS三剑客:等高线裁剪的完整工作流与避坑指南

本文详细介绍了EPS、ArcGIS和CASS三款软件在等高线裁剪中的协同工作流程与避坑指南。通过发挥各软件优势,解决数据完整性、拓扑准确性和流程可靠性等核心挑战,提升40%以上的工作效率。特别适合大型测绘项目中复杂地形的处理,涵盖数据准备、核心处理到后期优化的全流程。

weixin_30352645的博客 619

嵌入式Linux开发板入门指南与实战技巧

嵌入式Linux系统作为连接硬件与软件的关键技术,广泛应用于智能家居、工业控制等领域。其核心在于通过裁剪优化的Linux内核实现资源受限设备的智能化,开发板则是学习这一技术的最佳实践平台。从驱动开发到系统移植,开发者需要掌握交叉编译、设备树等关键技术。以树莓派、i.MX6ULL等主流开发板为例,配合Ubuntu环境与工具链,可快速完成从LED控制到AI应用的项目实战。特别对于初学者,建议从基础外设操作入手,逐步过渡到内核模块开发,同时善用printk和gdb等调试工具提升开发效率。

weixin_29190573的博客 236

LabView实现modbus通讯

labview实现modbus通讯

Lrj的博客 7663

Chandra在嵌入式Linux开发中的应用:交叉编译与调试助手

本文介绍了如何在星图GPU平台自动化部署🤖 Chandra - AI 聊天助手镜像,以辅助嵌入式Linux开发。该AI助手能提供交叉编译环境配置、内核参数调优及远程调试指导,显著提升开发效率,适用于嵌入式系统优化与调试等典型场景。

weixin_29092787的博客 360

高分思路!挑战7天完成一篇网状meta DAY1-7

PASSION!继续析挑战,7天完成一篇网状meta分!

MR_SCI_help的博客 787

手把手教你学Simulink——基于Simulink的多用户MIMO系统仿真建模示例

多用户MIMO概述在多用户MIMO系统中,基站配备多个天线,可以同时与多个用户进行通信。利用空间复用技术,不同用户的信号被分配到不同的空间流上,从而实现频谱资源的高效利用。多用户MIMO的核心挑战包括信道估计、波束成形设计以及干扰管理。关键技术点波束成形:通过调整发射信号的相位和幅度,在特定方向上增强信号强度并减少干扰。信道估计:获取每个用户的信道状态信息(CSI),用于优化波束成形矩阵。调制与解调:选择合适的调制方式(如QPSK、16-QAM等)以适应不同用户的信道条件。干扰消除。

MHD0815的博客 271

搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试

搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 5247

【人工智能】Warp 终端完整汉化方案(2026最新)

截至2026年5月,,仅完成了中文、日文、韩文等东亚语言的字符渲染支持,设置面板中无官方语言切换选项,相关中文UI功能需求仍在官方GitHub开源仓库的需求迭代队列中。

奶爸的编程之路,也就一周冷个三天 3113

嵌入式Linux系统 GDB、GDBServer 调试环境搭建

嵌入式系统开发过程中调试方法主要有: 1.内核、驱动代码调试工具,valgrind、lttng、trace、kdump、kprobe、jprobe等, 2.linux系统上的App用户程序调试方法,GDB、app-log,还有些第三方捕获内核crash工具 当用户App程序涉及的应用复杂时,软件长时间运行才能够出现的bug、或内核crash情况,可以采用applog+第三方内核捕获工具的方法、来查找系统的故障现场;此部分内容待时间方便时、另行分享。此篇主要介绍GDBServer和GDB常用命令使用方法。

weixin_38387929的博客 2446

第15章 AI 产品原型设计 —— 让 AI 成为你的产品经理

理解产品需求- 将模糊的想法转化为具体的原型方案生成高质量原型- 输出符合设计规范的 HTML 原型提供设计建议- 基于 UX 最佳实践给出优化建议维护原型文档- 自动更新原型说明和变更记录。

快乐的修补匠的专栏 506

Unity Hololens2开发|(一)环境配置

开发过程中预览和调试应用:可以在电脑上的 Unity 编辑器中以播放模式本地运行应用,并将体验流式传输到 HoloLens2。将来自 HoloLens2 的输入(视线、手势、语音和空间映射)发送到电脑,在其中内容以虚拟沉浸式视图渲染。在HoloLens2设备中,打开Settings面板,依次选择Update & Security > For Developers,打开“Developer Mode”。在开发计算机中打开控制面板,依次选择“更新和安全> 开发者选项”,打开“开发人员模式”;

游戏开发小Y的博客 14万+
上一篇: Ubuntu 终端窗口操作快捷键
下一篇: sudo:sudo /etc/sudoers is world writable
小碗童
博客等级 码龄8年 24粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值