社区首页
博客
论坛
下载
文库
评测
芯语
研讨会
商城
EE直播间
芯视频
E聘
更多
社区
论坛
博客
下载
评测中心
面包芯语
问答
E币商城
社区活动
资讯
电子工程专辑
国际电子商情
电子技术设计
CEO专栏
eeTV
EE|Times全球联播
资源
EE直播间
在线研讨会
视频
白皮书
小测验
供应商资源
ASPENCORE Studio
活动
IIC Shanghai 2023
2023(第四届)国际 AIoT 生态发展大会
全球 MCU 生态发展大会
第四届临港半导体产业高峰论坛暨司南科技奖颁奖盛典
IIC Shenzhen 2023
第四届中国国际汽车电子高峰论坛
更多活动预告
杂志与服务
免费订阅杂志
电子工程专辑电子杂志
电子技术设计电子杂志
国际电子商情电子杂志
登录|注册
帖子
帖子
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
首页
热门
专栏作家
电子产业热词
CEO专栏
技术文库
科技头条
专栏入驻
×
提示!
您尚未开通专栏,立即申请专栏入驻
帖子
博文
用户
芯语
登录
首页
专栏作家
CEO专栏
论坛
博客
E币商城
资讯
电子工程专辑
国际电子商情
电子技术设计
文章
49
阅读
37203
评论
1
赞
10
关注
0
粉丝
2
Linux二进制
Linux编程、内核模块、网络原创文章分享,欢迎关注"Linux二进制"微信公众号
关注
文章
49
阅读
37203
评论
1
Ta的
文章
gcc__attribute__((always_inline))与__attribute__((noinline))解析
引言在 C 语言中,inline 关键字是一种编译器提示,用于建议编译器将函数调用替换为函数体本身。这种优化技术可以减少函数调用的开销,特别是对于那些频繁调用但实现简单的函数来说更为有效。除了标准的 inline 关键字外,一些编译器还提供了额外的控制机制,如always_inline 和 noinline,以提供更精细的控制。我们接下来主要讲一下跟内联函数相关的两个属性:always_inlin
Linux二进制
2024-11-07
285浏览
gcc__attribute__((cleanup))解析
引言在 C/C++ 语言编程中,资源管理是一个十分重要的内容。确保资源在不再需要时被正确释放,可以避免内存泄漏和其他资源管理问题。GCC 提供了一个强大的扩展属性 __attribute__((cleanup(cleanup_function))),用于在变量作用域结束时自动调用一个清理函数。本文将详细介绍这一特性的原理、实际案例以及如何在项目中应用它。工作原理__attribute__((cle
Linux二进制
2024-11-06
181浏览
Cockpit|Web控制台图形化管理KVM虚拟机
Linux二进制
2024-11-05
294浏览
一步一步教你:如何在Linux上用QEMU搭建虚拟机
QEMU 是一个强大的开源硬件虚拟化软件,可以在多种操作系统上运行。本文将详细介绍如何在 Linux 平台上从源码编译 QEMU,并创建和配置一个虚拟机。我们将使用 CentOS 8.5 作为示例操作系统,但部分步骤同样适用于其他操作系统(如 Ubuntu)。1. 简介QEMU(Quick Emulator)是一个强大的开源虚拟化工具,可以模拟整个计算机系统,包括 CPU、内存、硬盘、网卡等。结合
Linux二进制
2024-11-01
339浏览
大佬不外传的交换机排障抓包黑科技
Linux二进制
2024-10-22
346浏览
内存检测利器对比|-fsanitize=leak与-fsanitize=address
-fsanitize=leak 和 -fsanitize=address 是 GCC 和 Clang 中的两种不同的内存错误检测工具选项。它们的主要目标都是在运行时检测程序中的内存问题,但它们专注的领域不同。以下是它们的区别和解析:1.-fsanitize=leak(LeakSanitizer)作用-fsanitize=leak 用于检测内存泄漏,即程序中通过动态内存分配(如 malloc、cal
Linux二进制
2024-09-23
656浏览
让内存错误无所遁形|GCC-fsanitize=address实战解析
引言在 C/C++ 编程中,内存错误如越界访问、内存泄漏、未初始化内存的读取等问题十分常见,这些错误通常难以排查和调试。为了帮助开发者检测这类内存问题,GCC 提供了 -fsanitize=address 选项,它通过集成 AddressSanitizer(地址消毒器)对内存问题进行动态检测。本文将介绍如何使用 GCC 的 -fsanitize=address 选项来定位内存问题,深入探讨其工作原
Linux二进制
2024-09-22
598浏览
内存泄漏无处藏身|GCC-fsanitize=leak实战攻略
引言内存泄漏是 C/C++ 语言编程中常见的内存管理问题之一。程序在动态分配内存后,未能及时释放会导致内存泄漏,进而造成程序占用大量内存,降低系统性能,甚至导致程序崩溃。GCC 提供了 -fsanitize=leak 选项,它通过集成 LeakSanitizer(内存泄漏检测器)帮助开发者自动检测并定位程序中的内存泄漏问题。本文将详细介绍 -fsanitize=leak 的工作原理,并结合具体的
Linux二进制
2024-09-21
628浏览
initramfs与dracut总结
initramfs 和 dracut 是 Linux 系统中与系统启动相关的两个概念。在我们进行内核驱动开发以及测试过程中,可能会接触到,网上的博客大都写的比较晦涩难懂,俗话讲:“好记性不如烂笔头”,于是便想自己总结一下,以便后续用到的时候拿出来看一下;经过查阅资料以及实践,下面将进行详细的归纳总结和说明。1. initramfs 概述initramfs 是 initial RAM filesys
Linux二进制
2024-09-20
533浏览
Linux内核模块管理工具总结
一. 内核模块加载情况查询Linux提供了三种方法查询加载到内核的模块,一种方法是直接访问proc虚拟文件系统获取,一种方法则是比较常用的lsmod方法获取,而lsmod的输出其实是基于/proc/modules。另外还有一种就是查看/sys/module/目录下是否生成已加载模块的目录。1、/proc/modules文件 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部
Linux二进制
2024-09-19
450浏览
gcc__attribute__((section("secname")))解析
引言在嵌入式开发或系统编程中,控制程序中代码和数据的内存布局是非常重要的。在一些情况下,我们希望将特定的函数或变量放置在特定的内存区域,比如让某些关键的初始化代码放在一个只读段中,或者将某些数据放入高速缓存友好的区域。GCC 提供的 __attribute__((section("secname"))) 是实现这种精细化控制的一个强大工具。在这篇文章中,我们将深入讨论 __attribute__(
Linux二进制
2024-09-18
475浏览
gcc__attribute__((aligned(alignment)))解析
引言在 C 语言中,内存对齐(Memory Alignment)是影响程序性能的重要因素之一。对齐不仅影响访问速度,还可能影响程序的正确性,特别是在硬件架构要求严格对齐的系统上。GNU C 编译器(GCC)提供了一种方便的机制来控制内存对齐:__attribute__((aligned(alignment)))。通过这个属性,我们可以控制变量、结构体或数组的对齐方式,以便优化性能或满足特殊需求。本
Linux二进制
2024-09-15
470浏览
gcc__attribute__((const))解析
引言在 C 语言中,编译器优化是提高程序性能的一个重要手段。编译器通过分析代码,识别出一些不必要的重复计算,消除冗余操作,从而提高程序的执行效率。为了帮助编译器更好地进行优化,GCC 提供了一些函数属性(attributes),__attribute__((const)) 就是其中之一。它告诉编译器,某些函数是纯函数(pure function),即它们的输出只依赖于输入参数,且没有副作用。通过这
Linux二进制
2024-09-14
484浏览
Linux干货|手把手教你编译Linux内核rpm包
一、下载源代码1、登录官网进入Linux 内核的官网,下载最新版本,或者其它版本的内核代码。这里是源代码的压缩包。2. 命令行下载在官网上查看内核tarball链接地址,在一个Linux操作系统中,使用wget命令行下载内核tarball代码。二、解压源代码压缩包下载完成后,可以通过tar命令解压。tar -xvf linux-6.3.tar.xz三、安装需要的软件包安装一些编译内核的依赖。下面步
Linux二进制
2024-09-13
472浏览
基于LinkerScript与__attribute__((section))实现C语言函数调用实战
在嵌入式开发和系统编程中,有时候我们需要对程序的布局进行精细控制,以便更好地管理内存资源。Linux下的链接器(ld)提供了强大的功能,可以让我们在链接阶段定制程序的布局。本文将介绍如何利用 Linker Script 结合 C 语言中的 __attribute__((section)) 属性来实现函数的自定义排列,并通过一个简单的示例展示如何遍历这些函数并调用它们。一、引言在编写大型应用程序或嵌
Linux二进制
2024-09-11
463浏览
LinkerScript脚本秘籍|语法深度解析与实战
一、前言编写完成一个 C/C++ 程序后,想要运行起来,通常必须要经过四个步骤:预处理、编译、汇编和链接。每个步骤都会生成对应的文件,如下图所示(注意后缀名):程序从编译链接到运行的各个阶段想必很多人都知道,但是能将很多细节真正讲清楚的人怕是寥寥无几。比如,在 C/C++ 语言中,一个源文件代码(这里以 .c 为后缀的文件举例)变为可执行文件(.exe/.out 后缀)的过程,究竟有几个阶段,每个
Linux二进制
2024-09-10
660浏览
Valgrind|让代码问题无处遁形,函数调用一目了然
一、Valgrind概述Valgrind 是一套 Linux 下,开放源代码(GPL V2)的仿真调试工具的集合,包含多个工具,如Memcheck、Callgrind、Cachegrind、Helgrind、Massif,主要用于帮助开发者发现和解决程序中的内存泄露检测、数据竞争、死锁、缓存性能分析、生成函数调用图和其它问题。Memcheck工具Memcheck 是 Valgrind 工具集中的一
Linux二进制
2024-08-13
659浏览
GDB调试:让程序运行中的错误无所遁形
引言作为 C/C++ 开发人员,确保程序正常运行是根本且首要的目标。而要达成这一目标,调试是最为基础的手段。熟悉各类调试方式,能够助力我们更迅速地定位程序问题,提升开发效率。在开发进程中,倘若程序的运行结果未达预期,首要之举便是启用 GDB 进行调试,在相应位置“设置断点”,进而剖析缘由;当线上服务出现问题时,首先查看进程是否存在。若进程不存在,需查看是否生成了 coredump 文件。若有,可借
Linux二进制
2024-07-17
718浏览
Linux多线程同步机制——读写锁(Read-WriteLock)
概述读写锁(Read-Write Lock)是一种线程同步机制,用于管理对共享资源的访问。与互斥锁(Mutex)不同,读写锁允许多个线程同时以读模式访问共享资源,但只允许一个线程以写模式访问资源。这种机制特别适用于读操作远多于写操作的场景,可以显著提高程序的并发性能。读写锁原理读写锁的设计基于以下原则:读操作共享:允许多个读线程同时访问共享资源,只要没有写线程正在访问或等待访问资源。写操作排他:在
Linux二进制
2024-07-08
274浏览
Linux多线程同步机制--条件变量
一、引言条件变量,作为多线程编程中的核心同步机制之一,其设计初衷在于解决线程间因等待某个条件成立而需暂停执行的问题。它允许线程在条件不满足时优雅地挂起,释放 CPU 资源,直到条件被其他线程修改为满足状态,从而被唤醒继续执行。条件变量的引入,不仅优化了程序的性能,还大大简化了线程间同步与通信的复杂度,是构建高效、稳定多线程应用的关键工具之一。二、基本概念条件变量是多线程编程中用于实现线程间通信和同
Linux二进制
2024-07-05
557浏览
Linux多线程同步机制--自旋锁(SpinLock)
引言在 Linux 操作系统的多线程编程领域中,合理的同步机制是确保数据一致性和线程安全的关键。自旋锁(Spin Lock)作为一种轻量级的同步手段,在特定的应用场景下,提供了与传统互斥锁不同的性能优势。本文将深入探讨自旋锁的内部原理、实现方式,并结合 C 语言案例,展示其在实际编程中的应用。自旋锁的概念自旋锁是一种特殊的锁机制,它不会使线程让出 CPU 给其他线程,进入阻塞状态等待锁的释放,而是
Linux二进制
2024-07-03
764浏览
Linux多线程同步机制--互斥锁(mutex)
引言在Linux多线程编程中,互斥锁(Mutex)是一种非常重要的同步机制,用于控制对共享资源的访问,确保在任意时刻只有一个线程可以访问特定的资源或代码段,即临界区。互斥锁的主要用途是防止多个线程同时访问共享资源,从而避免竞争条件和数据不一致的问题。互斥锁的工作原理相对简单,它通过锁定和解锁操作来控制对共享资源的访问。当一个线程需要访问共享资源时,它首先尝试锁定互斥锁。如果互斥锁已经被其他线程锁定
Linux二进制
2024-06-28
712浏览
Linux平台使用LD_PRELOAD劫持和注入程序
Linux 平台下,涉及动态链接的程序,在程序启动时,首先运行的是动态链接器(runtime dynamic linker),检查程序所需要的动态库文件并加载到进程的虚拟地址空间,然后才将控制权交给程序入口。前言一般来说,程序的链接分为静态链接和动态链接。静态链接就是把所有所引用到的函数或变量全部地编译到可执行文件中,动态链接则不会把函数编译到可执行文件中,而是在程序运行时动态地载入函数库,也就是
Linux二进制
2024-05-30
786浏览
【Python学习笔记】|PyPI使用国内源(pip更换国内源)
今天,我在学习及实践使用 Python 虚拟环境时,下载相应库文件,直接使用 pip 下载,结果因下载速度过于实在太慢导致始终无法下载成功,一直会报异常。真是让人崩溃。(myenv) [root@localhost pythonproject]# cat requirements.txtninja==1.11.1.1ovs==2.17.1.post1PyYAML==6.0sortedcontain
Linux二进制
2024-04-14
720浏览
【Python学习笔记】|Python虚拟环境
当用 Python 开发软件时,一个基本的方法是在你的机器上安装 Python,通过终端安装所有需要的库,在一个 .py 文件或笔记本中编写所有的代码,并在终端运行你的 Python 程序。这对于简单的 Python 脚本项目来说效果很好。但是在复杂的软件开发项目中,比如构建一个 Python 库、一个 API 或者软件开发工具包,往往你要处理多个文件、多个包和依赖关系。因此,你将需要为该特定项目
Linux二进制
2024-04-13
550浏览
正在努力加载更多...
Ta的
近期热门
Cockpit|Web控制台图形化管理KVM虚拟机
2024-11-05 294浏览
gcc__attribute__((always_inline))与__attribute__((noinline))解析
2024-11-07 285浏览
gcc__attribute__((cleanup))解析
2024-11-06 181浏览
今日
新闻
TOP1
商务部:加强对美出口管制,涉及镓、锗、锑、超硬材料等两用物项
来源:esmc
TOP2
中汽协会:建议中国汽车企业谨慎采购美国芯片
来源:esmc
3
无需电池?这种设备能让你随时随地监测口腔健康
来源:ednc
4
德国大众汽车关厂裁员并减薪,12万名工人罢工行动爆发
来源:eetc
5
美国无人机监管政策收严,为了远程ID广播我不得不这样做
来源:ednc
6
光速反制!商务部决定加强相关两用物项对美国出口管制
来源:eetc
7
比亚迪拿下苹果ipad组装市场超三成份额
来源:eetc
8
中国企业吃下52.2%份额!Q3全球动力电池市场格局生变
来源:esmc
本网页已闲置超过10分钟,按键盘任意键或点击空白处,即可回到网页
X
最新资讯
商务部:加强对美出口管制,涉及镓、锗、锑、超硬材料等两用物项
中汽协会:建议中国汽车企业谨慎采购美国芯片
无需电池?这种设备能让你随时随地监测口腔健康
德国大众汽车关厂裁员并减薪,12万名工人罢工行动爆发
美国无人机监管政策收严,为了远程ID广播我不得不这样做