自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux下多核CPU指定程序运行的核

查看CPU核心数量:lscpu

2024-02-19 19:00:00 890

原创 C语言C++堆栈打印方法

【代码】C语言C++堆栈打印方法。

2024-02-19 10:41:29 709

原创 2024春晚刘谦魔术C++实现

假设4张扑克牌用5、6、7、8来表示,洗牌就是把5678的顺序打乱,根据数学可知5678是等价的,分别表示4个数字,在此我们假设洗牌后是 5 6 7 8.男生留下的6在第5张:785856->858567->585678->856785->567858->678585->785856->858567。女生留下的6在第3张:85856->58568->85685->56858->68585->85856->58568->85685。取出最上面的一张放一边,此时取走6,接下来就是想办法取到另一个6。

2024-02-12 11:17:57 918

原创 十六进制IP转换点分十进制代码

函数返回的是静态分配的内存空间,多次调用该函数会覆盖先前的结果。如果您需要在程序中保存多个IP地址,请将其复制到其他的内存区域或使用更加安全的函数进行转换。当您运行以上代码时,它将首先提示您输入一个十六进制格式的IP地址。请务必确保输入的字符串是正确的,且长度不超过8个字符(不包括字符串结尾符’\0’)。以下是一个可以实现将输入的十六进制格式的IP地址转换为点分十进制格式并输出的简单程序。函数将输入的字符串解析成无符号整数,然后使用。

2023-10-23 21:08:26 859

原创 01简单的CMakeLists.txt示例

CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,

2023-10-16 09:07:43 294

原创 Linux系统移植框架简介

系统移植就是给开发板安装一个linux系统。需要从官方下载u-boot源码linux内核源码根文件系统的源码,对源码进行配置和编译,生成对应的源码的镜像文件,将镜像文件部署到开发板中,使开发板可以启动linux系统。

2023-10-13 11:38:24 175

原创 cmake: command not found

是一个用于自动化构建的工具,用于生成 Makefile 或者 IDE 项目文件以编译源代码。安装完成后仍然无法执行,那可能是环境变量配置有问题。您可以尝试重新启动终端或者执行。命令来查找其路径,如果没有输出路径,则说明尚未安装。您可以使用适合您的包管理器来进行安装。最后,重新运行脚本,看看问题是否已经解决。是否正确安装,并且已经加入了环境变量。这个错误提示表明bash 找不到。未安装,那么您需要先安装。安装完成后,您可以再次执行。命令使修改的环境变量生效。确认系统中已经安装了。

2023-10-11 11:05:40 10362

原创 Linux磁盘扩容

首先,我们来简要介绍一下物理卷、逻辑卷和卷组的概念。

2023-09-28 09:01:48 108

原创 Linux中nfs:failed: Operation not supported

先给出思路:一个简单粗暴的方式:卸载重装排除未知问题,步骤如下:停止 NFS 服务:如果您使用的是不同的发行版,可能需要使用相应的命令来停止 NFS 服务。卸载 NFS 软件包:(可选)删除 NFS 服务器的配置文件和相关数据。这取决于你的实际需求,如果你希望完全清理 NFS 服务器的配置和数据,请执行以下操作:二、安装nfsLinux中nfs服务安装

2023-09-26 17:10:48 406

原创 Linux卸载nfs

(可选)删除 NFS 服务器的配置文件和相关数据。这将卸载 NFS 服务器软件包。请注意,可能会有其他依赖软件包一并被卸载。如果您使用的是不同的发行版,可能需要使用相应的命令来停止 NFS 服务。

2023-09-26 17:02:26 1246

原创 3.6 重载其它makefile文件

有时一个m akefile文件和另一个m akefile文件相近也是很有用的。您可以使用‘include’指令把更多的m akefile文件包含进来,如此可加入更多的目标和定义的变量。然而如果两个m akefile文件对相同的目标给出了不同的命令,m ake就会产生错误。在主m akefile文件(要包含其它m akefile文件的那个)中,您可以使用通配符格式规则说明只有在依靠当前m akefile文件中的信息。

2023-09-18 21:57:41 85

原创 3.5 Makefile的重建

Makefiles是一种用于构建和维护软件项目的工具。它们是文本文件,包含了一系列规则和指令,告诉计算机如何编译、链接和生成可执行文件。。如果一个makefile有规则来描述如何更新它自己,或者适用一个隐含规则,那么它将在必要时被更新。在检查完所有makefile之后,如果任何一个实际上发生了变化,make会从头开始读取所有makefile,并重新构建项目。这个过程会持续进行,直到没有任何makefile发生变化。有时候,我们想阻止make对某些makefiles进行隐含规则搜索,以提高效率。

2023-09-17 13:00:10 178

原创 3.4 设置环境变量MAKEFILES

MAKEFILES是一个环境变量,在GNU Make中用于指定额外要读取的makefile的名称。它允许您在make执行前设置一个由空格分隔的makefile列表。这些额外的makefile将在makefile中的其他规则之前被读取,并且可以用于执行一些有用的操作。当设置了MAKEFILES环境变量时,make会先搜索这些指定的makefile,并将它们读取到构建过程中。这类似于使用include指令引入makefile的内容。

2023-09-16 11:48:34 458 2

原创 Uboot中bootargs以及bootcmd设置

u-boot有两种工作模式:自启动模式, 交互模式。​ 交互模式:开发板上电之后,u-boot启动,在串口工具上打印各种信息,当出现倒计时之后,按下电脑键盘上的任意键,此时就会进入到u-boot的交互模式,我们就可以输入各种u-boot命令和u-boot进行交互,u-boot内部解析串口输入的u-boot命令。

2023-09-12 09:28:20 1666

原创 网卡抓不到带Tag的数据包

用于解决网卡抓不到带Tag的数据包。

2023-08-29 17:23:14 216

原创 3.3 Makefile的嵌套包含

下面是一个示例Makefile和sub.mk的内容。在这个例子中,我们使用了include指令将sub.mk文件包含到Makefile中。sub.mk定义了一个变量VAR,并具有一个名为say_hello的目标,该目标会输出VAR的值。Makefile中的all目标依赖于say_hello目标,并且在执行时会输出"Hello from Makefile"。当我们运行make命令时,它会读取Makefile并暂停读取,然后读取sub.mk文件的内容。完成后,它会继续读取Makefile,找到all。

2023-08-06 12:09:26 538

原创 3.2 GNUmakefile、makefile和Makefile以及自命名的Makefile

如果您想要使用非标准的makefile名称,可以使用"-f"或"–file"选项指定makefile名称。参数“-f name”或“–file=name”告诉make以读取文件name作为makefile的方式进行操作。如果使用多个"-f"或"–file"选项,可以指定多个makefile。所有的makefile将按照指定的顺序进行合并。如果您使用了"-f"或"–file"选项,那么默认的makefile名称GNUmakefile、makefile和Makefile将不会自动被检查。

2023-08-06 00:30:32 307

原创 3.1 一个Makefile所包含的内容

Makefiles包含五种内容:显式规则、隐式规则、变量定义、指令和注释。显式规则:指定何时以及如何重新生成一个或多个文件,被称为目标(targets)。它列出了目标所依赖的其他文件,称为目标的先决条件(prerequisites),并且可能提供了用于创建或更新目标的命令。隐式规则:根据文件名指定何时以及如何重新生成一类文件。它描述了目标如何依赖于与目标类似的文件,并提供了用于创建或更新此类目标的命令。变量定义:是指为变量指定一个文本字符串值的行,稍后可以将其替换到文本中。

2023-08-05 10:08:51 132

原创 2.7 Makefile的清除规则make clean

并且恰好存在与目标同名的实际文件,那么make将认为该目标已经 “up to date”,也就是已经是最新状态,因此不会执行与该目标关联的命令。是一个伪目标,而不是实际的文件。通过这样做,即使存在一个名为"clean"的实际文件,make也不会与之混淆,也可以忽略。指示符,我们可以确保在Makefile中定义的清理目标始终会执行其命令,而不受同名实际文件的干扰。是一个特殊的目标属性,用于告诉make该目标不对应于实际的文件。时,无论是否存在与目标同名的文件,make都会执行与该目标关联的命令。

2023-08-04 10:39:38 1238

原创 2.6 目标前置条件分组的Makefile

这两种风格的 makefile 实现的功能是相同的,但基于前置条件的分组风格将目标和其依赖的前置条件更紧密地组合在一起,使得 makefile 更加简洁和易于维护。然而,有些人可能更喜欢传统风格的 makefile,因为它们将每个目标的相关信息放在一起,更容易理解和修改。选择使用哪种风格取决于个人偏好和项目需求。当使用传统的 makefile 风格时,每个目标都在单独的条目中定义,其中包含了该目标的依赖关系和构建规则。

2023-08-03 18:58:49 230

原创 2.5 Makefile使用自动推导(附示例)

现在有main.ca.cb.ca.hb.h以下是构建的文件及其内容:这样,主程序main.c通过引用头文件a.h和b.h,分别调用了a.c中的print_a()函数和b.c中的print_b()函数。每个文件中都有相应的打印语句,以输出对应的文件名和所包含的文件。

2023-08-02 09:39:40 370

原创 合并固件的软件ImageGEN

将文件按照以下格式合并为一个固件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUskiI92-1690851741920)(ImageGEN.assets/imagegen.jpg)]

2023-08-01 09:04:56 95

原创 调试检测某一段程序运行时间的代码

在上述示例中,我们使用了头文件中的timespec结构体来存储开始时间和结束时间。通过调用函数并传递参数获取系统的实时时钟值。然后,在需要测试运行时间的代码段之前记录开始时间,之后记录结束时间。接下来,计算代码执行的时间差,以纳秒为单位,并将其转换为微秒。最后,使用printf()函数输出结果。

2023-07-31 23:08:53 403

原创 2.4 Makefile变量的用法(附示例)

本专栏所有内容围绕Makefile官方文档进行刨析,给出详细具体示例做辅助理解。

2023-07-30 20:07:40 179

原创 2. Makefile之目标、依赖(附示例)

本专栏所有内容围绕Makefile官方文档进行刨析,给出详细具体示例做辅助理解。

2023-07-23 12:14:56 707

原创 1. Makefile版本1(基础版)

执行make命令时,它会去当前目录下查找名为Makefile的文件,并根据它的指示去执行操作,生成第一个目标。

2023-07-20 18:27:03 105

原创 25.Linux磁盘状态df、du命令

df(磁盘空间使用情况)和du(目录空间使用情况)是在Linux中用于查看磁盘和目录空间使用情况的常用命令。这两个命令提供了不同的功能,df用于查看文件系统的整体磁盘空间使用情况,而du用于查看指定目录或文件的磁盘空间使用情况。描述:df命令用于显示文件系统的磁盘空间使用情况。描述:du命令用于估计目录和文件的磁盘空间使用量。语法:df [选项] [文件或目录]语法:du [选项] [文件或目录]

2023-07-20 09:05:32 625

原创 24.Linux中grep命令

grep使用:在文件中搜索特定的单词:忽略大小写进行单词搜索:反向匹配,打印不包含特定单词的行:打印匹配到模式的文件名,而不是匹配的行:递归搜索子目录中的文件:显示匹配行及行号:匹配多个模式中的任意一个:使用正则表达式进行模式匹配:显示匹配行之前和之后的内容:二、grep命令详解grep命令是在Linux和Unix类操作系统中非常常用的文本搜索工具。它可以在指定的文件中搜索匹配特定模式的行,并将匹配到的行打印出来。基本的grep命令语法如下:在这里,

2023-07-19 15:50:15 405

原创 23.Linux查看系统进程

以上示例输出显示了进程的用户、进程ID(PID)、CPU占比(%CPU)、内存占比(%MEM)、虚拟内存大小(VSZ)、常驻内存集大小(RSS)、终端(TTY)、状态(STAT)、启动时间(START)、CPU时间(TIME)和命令行(COMMAND)等信息。:显示当前所有进程的详细信息,包括所有用户的进程。:以用户为主要输出格式,并显示用户相关的详细信息。:显示当前所有进程的详细信息,包括命令行参数。:显示所有用户的进程,包括其他用户的进程。:显示没有控制终端的进程。:显示指定用户的进程。

2023-07-18 09:09:01 2195 2

原创 一文秒懂static关键字

静态变量 count 在第一次调用 increment() 时被初始化为 0,然后在后续的函数调用中保持其值,不会重复创建和销毁。每次调用 increment() 函数时,count 的值都会自增,并使用 printf 函数输出当前的计数值。通过运行上述代码,您将看到每次调用 increment() 函数时,计数器的值都会增加,并按顺序输出相应的计数值。因此,变量的状态无法在多次函数调用之间保持。关键字时,变量在每次函数调用时都会重新初始化的特性。关键字时,变量在每次函数调用时都会重新初始化的特性。

2023-07-18 00:11:58 207

原创 驱动程序和应用程序

应用程序(APP)在打开文件时,可以得到一个整数,这个整数被称为文件句柄。去读写文件时,文件的当前偏移地址也会保存在 struct file 结构体的。的每一个文件句柄,在内核里面都有一个。

2023-07-17 09:30:31 107

原创 Linux:Active: active (exited) since Thu 2023-07-06 07:06:51 UTC; 1h 57min ago

服务在您的系统上处于活动状态,并且已经成功启动。状态中显示为"exited"表示该服务是一次性运行的,并且它没有正在运行的进程。如果您希望在系统下次启动时禁用。

2023-07-06 17:09:34 1628

原创 Linux关闭防火墙

这些命令将显示防火墙的状态信息,包括是否已启用和正在运行。

2023-07-06 16:48:33 3830

原创 Linux配置nfs

现在,NFS服务器已经重新配置并准备好供客户端访问。确保在客户端上安装了NFS客户端软件包,并使用适当的方式将NFS共享目录挂载到客户端上。打开NFS服务器配置文件以供编辑。在打开的配置文件中添加NFS共享目录的条目。按照以下格式添加一行配置,并将。1.重新加载NFS服务器配置。如果要允许所有客户端访问,可以使用通配符。保存并关闭配置文件。

2023-07-06 15:11:50 1743

原创 完美解决typora图片链接失效问题

今天在使用 Typora把自己写的笔记分享给别人使用的时候,别人告诉我在他的电脑上打不开图片,我看了一下他给我的反馈,我去,原来是图片都失效了。这是要让我购买云服务的节奏啊,不过咱们怎么能被别人牵着鼻子走呢,读了一下Typora的手册,发现它自身提供的一个方便功能,OK搞定,很简单,通过以上步骤,你就可以成功将图片嵌入笔记。这样做的好处是,无论笔记文件在何处,图片都能够与笔记一起保存和加载,避免了由于文件路径变动而导致的图片加载失败的问题。文件 -> 偏好设置 -> 图片。

2023-06-23 21:20:23 783

原创 C语言链表的使用及例代码

链表是一种常见的数据结构,用于实现各种算法和系统中的数据存储和管理。它是一个节点的集合,每个节点包含数据和指向下一个节点的指针。使用指针可以动态分配内存空间,因此可以在运行时添加或删除节点。需要注意的是,在释放链表内存空间时,应该从头节点开始遍历,并依次释放每个节点的内存空间。打印链表中的所有节点数据。向链表中添加三个节点。创建一个空链表,然后使用。

2023-06-22 10:06:38 733

原创 valgrind检测内存泄漏教程

如果命令输出 Valgrind 的版本信息,说明已经成功安装了 Valgrind。如果命令无法识别 valgrind 命令,那么就说明还没有安装 Valgrind 或者环境变量配置不正确。

2023-06-22 01:39:56 3645

原创 Linux内存泄漏valgrind

Valgrind 是一个内存调试和性能分析工具,可以检测包括内存泄漏、使用未初始化的变量等内存相关错误,并提供详细的错误信息和定位,是 C/C++ 开发中不可或缺的工具之一。安装 Valgrind。

2023-06-22 00:30:51 715

原创 安装valgrind提示libc6-dbg but it is not going to be installed

根据错误提示,安装Valgrind时出现了依赖关系问题。这个命令会尝试修复系统中的损坏或不完整的软件包,并满足软件包之间的依赖关系。

2023-06-22 00:27:01 593

原创 22.Linux修改文件所有者和修改文件所在组

在Linux系统中,文件权限用于控制对文件和目录的访问权限。文件权限分为三个部分:所有者权限、群组权限和其他用户权限。每个文件或目录都有9位权限设置,可以使用符号模式(如rwx)或数字模式(如755)表示权限。在上述示例中,文件名为 “file.txt”,它的权限设置为-rwxr-xr--。数字模式也可以用来表示文件权限。将所有者、群组和其他用户的各个权限加起来,就得到一个三位数的数字。要修改文件或目录的权限,可以使用chmod命令。这将给所有者赋予读写权限,而对于群组和其他用户则只有读权限。

2023-06-21 20:58:48 4072

Linux嵌入式开发+C语言+Makefile+网络编程+驱动开发+系统移植

这份思维导图文档涵盖了Linux嵌入式开发、C语言、Makefile、网络编程、驱动开发和系统移植等多个领域的知识,可以说是一个非常完整的学习框架。 这份文档将是一份非常有用的参考。其中,Linux嵌入式开发部分介绍了如何搭建环境、交叉编译、制作根文件系统等实用技巧,帮助读者快速上手嵌入式开发领域。 而该文档中的C语言部分则详细介绍了基本数据类型、指针、结构体、函数、预处理等内容,并配合大量的代码示例,让读者更加深入、全面地了解和掌握C语言。 Makefile部分则重点讲解了如何编写Makefile文件,包括规则、变量、函数等,帮助读者更好地管理和组织自己的代码工程。 在网络编程方面,该文档介绍了TCP/IP协议、Socket编程等内容,深入浅出地阐述了网络编程的原理和实现方法。 驱动开发部分涵盖了驱动的内核代码、驱动程序、设备文件等多个方面,涉及了常用的设备驱动框架和API函数。 文档的框架部分内容已经填充完整,但是我总结好的并不是大家的,自己总结的才是真正属于自己的知识,所以另一部分需要大家在学习过程中填充完整,当你填充完整的时候,相信你已经是嵌入式开发的大神了,加油!

2023-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除