应用程序
文章平均质量分 92
嵌入式Jerry
《Yocto项目实战教程》+《定制自己的Linux》作者
- 请关注个人B站,学习更丰富前沿的技术:嵌入式Jerry
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Yocto 项目中 X11 的完整指南
Yocto 作为一个高度可定制的 Linux 发行版构建系统,并不会默认启用 X11,因此开发者需要手动配置 X 服务器(Xorg)和相关组件。通过这些配置,你可以让 Yocto 镜像成功运行 X11 图形界面,并确保 X 服务器能够顺利启动和运行 GUI 应用。默认情况下,X11 组件安装后不会自动启动,你可以使用以下几种方法让 X 服务器随系统启动。只是提供 X11 最基础的支持,可能不会安装完整的 X 服务器、窗口管理器和终端。这样,每次系统启动时,X 服务器会自动运行,并启动。这样,当系统启动后,原创 2025-02-18 15:45:18 · 1186 阅读 · 0 评论 -
CMake, 应该这样学
CMake,全称,是一个开源的构建工具。它通过描述项目的构建需求,生成具体平台(如 Linux、Windows、macOS)的构建文件(如 Makefile 或 Ninja 文件)。与传统工具相比,CMake 提供了更高的灵活性和可扩展性。开发背景:CMake 于 2000 年由 Kitware 开发,目的是简化跨平台项目的构建。主要特点支持多种构建系统(如 Ninja、Make、Visual Studio)。易于集成第三方库。提供模块化配置和强大的依赖管理。通过optionendif()原创 2024-11-22 15:59:29 · 1162 阅读 · 2 评论 -
深入解析 Autotools 自动化工具
Autotools 是经典构建系统工具,其在跨平台兼容性和构建流程自动化方面的贡献不可忽视。通过学习 Autotools,开发者不仅可以掌握复杂构建系统的原理,还能更好地理解现代构建工具的发展方向。是一套功能强大的构建系统工具集,用于自动生成软件项目的构建脚本,解决跨平台兼容性问题。尽管如此,Autotools 仍在许多经典开源项目中占据重要地位,其深厚的生态和广泛的兼容性使其在特定场景下仍具不可替代性。文件定义构建目标和规则,例如需要编译的源文件、输出的可执行文件等。其主要任务是帮助开发者生成可移植的。原创 2024-11-21 12:04:36 · 1981 阅读 · 3 评论 -
纤程,你听过吗?
纤程(Fiber)是一种运行在用户态的轻量级执行单元,可以理解为更轻量化的线程或协程。它允许开发者手动控制任务的切换,而非由操作系统内核调度。纤程是一种轻量级、高效且灵活的用户态线程,在特定场景中展现出独特的优势。通过用户态调度和手动切换,纤程提供了线程和协程难以实现的灵活性。尽管纤程在主流开发中应用较少,但它在高并发系统、嵌入式设备、游戏开发等领域展现出强大的潜力。希望本文让你对纤程有了全新的认识。如果你对纤程的实现或应用有任何疑问,欢迎在评论区交流!原创 2024-11-19 10:39:13 · 1062 阅读 · 3 评论 -
用户空间线程:灵活与性能的平衡
用户空间线程是由用户态的线程库管理和调度的线程,与操作系统内核线程不同。用户空间线程无需内核的直接参与,在用户态完成创建、调度和同步操作。轻量化:线程创建和切换不需要陷入内核,开销较小。灵活性:用户可以自定义调度策略。不透明性:内核对用户空间线程不可见,所有线程映射到同一个内核线程。| 用户空间 || | 线程 1 | || | 线程 2 | || | 线程 3 | |v| 内核空间 || | 内核线程 | |用户空间线程凭借其轻量化和高性能,在现代计算中扮演着不可或缺的角色。原创 2024-11-19 09:46:28 · 1109 阅读 · 3 评论 -
Clang-Check:它还有用吗?
是一个简单而高效的工具,适用于快速验证 C/C++ 代码的语法和基础语义问题。虽然clang-tidy的功能更强大,并逐渐成为代码分析和改进的主流工具,仍然在某些特定场景中发挥着重要作用。对于开发者来说,选择使用哪种工具取决于项目需求、开发阶段和所需的分析深度。所以,它还有用吗?答案是肯定的。尽管它的功能有限,但它的轻量性和简洁性使其在需要快速代码验证的场景中仍然是一个值得使用的工具。原创 2024-11-08 10:02:40 · 1123 阅读 · 0 评论 -
神秘的LLVM,熟悉的GNU
LLVM,即 “Low Level Virtual Machine”,最初是作为一个研究项目开始的,旨在提供一种模块化、灵活的编译器基础架构。虽然名字中包含“虚拟机”,但它与传统的虚拟机概念并不相同。如今,LLVM 已经扩展成为一个包含编译器前端、后端、优化工具和调试器的全面工具链。LLVM 的核心是其中间表示(LLVM IR),它是编译过程中一种通用的、低级的语言表达形式。LLVM 的模块化设计允许开发者用其核心库来实现不同的编译器前端和后端,这使得开发新的编程语言编译器变得更加便捷。原创 2024-11-08 09:47:59 · 2008 阅读 · 1 评论 -
Clang-Tidy 是什么?如何让你的代码更干净无瑕
clang-tidy是一个功能强大的静态分析工具,帮助开发者在开发过程中保持代码质量和一致性。通过与 IDE(如 VSCode)的集成,clang-tidy可以在保存时自动运行,实时反馈问题并提供修复建议,让开发者专注于功能实现,而不再为代码问题烦恼。希望本文能帮助你轻松掌握clang-tidy,将其融入你的开发流程中,提高项目的整体代码质量。原创 2024-11-07 12:44:43 · 5117 阅读 · 0 评论 -
Clang-Format:让你的代码整齐划一,格式不再烦恼
在现代软件开发中,代码规范和一致性对团队协作和代码质量至关重要。如何保持代码风格一致,避免手动格式化的繁琐操作?`clang-format` 是一款强大而灵活的代码格式化工具,它为开发者提供了高效的解决方案。本文将详细介绍 `clang-format` 的概念、历史、功能、自动化使用方案(特别是在 VSCode 中),并给出完整的实例。原创 2024-11-07 11:44:47 · 14658 阅读 · 0 评论 -
Clang重要吗?你用过吗?
Clang 工具链包含多个子命令,满足不同的编译和分析需求。子命令用途clang++C++ 编译器前端,类似 g++,专门用于处理 C++ 文件。代码格式化工具,自动调整代码格式,适合团队协作中的代码风格管理。clang-tidy静态分析工具,检测并修复代码中的常见错误和潜在问题,适合代码审查。代码检查工具,在不完全编译的情况下检测语法和结构问题。交互式 AST 查询工具,用于高级代码分析。clangd语言服务器,为 IDE 提供代码补全、跳转、引用查找等功能。原创 2024-11-06 10:36:52 · 1625 阅读 · 0 评论 -
截图工具 for Linux --- 你用过吗?
Linux系统的截图工具种类丰富,支持从X11到Wayland的多种图形后端。X11的import和scrot适用于传统桌面和嵌入式设备,而Wayland的grim和则在现代桌面和嵌入式环境中广泛使用。同时,Weston下的模块专为嵌入式环境设计,能够满足资源受限设备。原创 2024-11-01 11:08:41 · 2000 阅读 · 0 评论 -
Multlib ? = lib32 + lib64
现代计算系统的架构逐渐多样化,64位处理器的使用在桌面和服务器端已经非常普遍,但32位应用在某些嵌入式系统中仍然广泛存在。这就导致在某些系统环境下,不同架构或位数的应用必须共存。例如,运行在64位系统上的32位应用程序、32位设备驱动程序或32位库的兼容性,都是现代操作系统需要解决的问题。因此,Multilib的目的是在一个操作系统中支持多种架构的应用和库。Multilib技术通过在系统中定义多条库路径、配置编译器支持、指定链接文件位置等方式,来实现同一个系统支持多种架构的应用。原创 2024-10-31 11:29:20 · 1242 阅读 · 0 评论 -
Systemd 和 Systemctl命令详解
systemctl 是 Linux 系统中不可或缺的服务和系统管理工具。它通过对服务单元(Unit)的精确控制,实现了对服务的启动、停止、重启、状态监控以及开机自启等功能。作为 systemd 的命令行接口,systemctl 赋予了系统管理员对服务和资源的全面控制能力,在提升系统启动速度、减少服务依赖冲突、提高系统资源的利用率等方面发挥了重要作用。无论是用于服务器的运维管理还是嵌入式项目的自动化控制,systemctl 都提供了可靠的解决方案。原创 2024-10-31 11:00:09 · 1421 阅读 · 0 评论 -
Systemd:现代 Linux 系统服务管理的核心
Systemd 是一种现代的系统和服务管理器,用于在 Linux 系统启动时初始化用户空间,并通过服务管理和资源控制实现系统的自动化管理。自发布以来,Systemd 已逐渐取代传统的 SysVinit 和 Upstart,成为主流 Linux 发行版的默认初始化系统。它通过并行化启动、服务依赖管理、事件驱动的服务监控、日志管理等功能,为 Linux 系统带来了更高效和更现代化的管理能力。原创 2024-10-29 15:29:13 · 1273 阅读 · 1 评论 -
嵌入式浏览器 -- Chromium VS Firefox
嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒体处理。在物联网、智能家居、车载系统和医疗设备等应用中,嵌入式浏览器已成为设备与用户、设备与云端数据交互的关键界面。原创 2024-10-29 10:29:15 · 2240 阅读 · 0 评论 -
对称加密与非对称加密
对称加密和非对称加密各有优劣,通常在实际应用中结合使用。例如,在 SSL/TLS 通信协议中,非对称加密用于密钥交换,对称加密用于数据传输,从而实现了高效的加密通信方案。原创 2024-10-26 15:41:10 · 819 阅读 · 0 评论 -
Repo工具详解
Repo是Google为Android项目开发的一个版本控制工具,用于简化对Git仓库的管理。它并非取代Git,而是建立在Git之上的一层工具集,帮助开发者更高效地管理多个Git仓库中的代码。在复杂的嵌入式项目中,通常涉及多个代码库和组件的管理,而Repo通过提供集中化的配置文件,可以同时处理多个Git仓库的克隆、更新、同步等操作,使得大型项目中的代码管理更加灵活和高效。原创 2024-10-20 09:31:11 · 1503 阅读 · 0 评论 -
用户空间概述
用户空间”(或称为userland)是指所有在操作系统内核之外运行的代码。用户空间通常指操作系统用于与内核交互的各种程序和库:执行输入/输出、操作文件系统对象、应用软件等。每个用户空间进程通常在其独立的虚拟内存空间中运行,除非显式允许,否则无法访问其他进程的内存。这是现代主流操作系统实现内存保护的基础,也是权限分离的一个重要组成部分。此外,单独的用户模式还可用于构建高效的虚拟机——参见Popek和Goldberg的虚拟化要求。原创 2024-10-15 17:53:45 · 614 阅读 · 0 评论
分享