
嵌入式
文章平均质量分 69
拆解嵌入式的部分知识。
小马同志( ̄^ ̄)ゞ
这个作者很懒,什么都没留下…
展开
-
理解计算机Cache
首先考虑一种标量访问的情况。就像下面这段代码,它重复地访问同一个标量。在这种情况下,存储访问会出现需要访问的地址不随时间变化的特点。a = 10print(a)如果我们考虑数组访问,比如顺序访问数组中的每个元素。那么存储访问会出现需要访问的地址随时间线性变化的特点。观察这两种不同的访问情况,我们可以发现,内存访问并非是完全随机的,这背后体现的是局部性原理。局部性原理可以分为两类。一个是时间局部性,一个元素一旦被访问到,很可能在短时间内再次被访问到。原创 2024-06-20 15:01:47 · 506 阅读 · 0 评论 -
Makefile学习笔记13|使用makefile生成后台启动和停止的脚本
Makefile学习笔记13|使用makefile生成后台启动和停止的脚本 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录 本节将为上一节的makefile编写两个脚本,分别是后台启动脚本和停止脚本,并且将这两个脚本也拷贝到/usr/bin/目录下。后台启动脚本 我们给后台启动脚本命名为start_test_install。其内容就是执行命令nohup test_install 3 &,其中的nohup是不打印输出信息的意思。# test_in原创 2022-05-04 14:48:52 · 996 阅读 · 2 评论 -
Makefile学习笔记12|自定义makefile函数调用实现中的install
Makefile学习笔记12|自定义makefile函数调用实现中的install 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录安装 创建目录:~/make/src/test_install。在此路径下创建文件:test_install.cpp。make test_install后再./test_install,运行无误后进行下一步。后面要把test_install安装进/usr/bin/。#include <iostream>#inclu原创 2022-05-01 18:51:47 · 1812 阅读 · 0 评论 -
Makefile学习笔记11|嵌套make同时编译和清理多项目
Makefile学习笔记11|嵌套make同时编译和清理多项目 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录 我们前面都是逐一编译每一个项目,但是现实场景当中我们一个大项目中可能有多个分项目,比如说服务端与客户端。如果我们还要逐一编译每一个分项目,那将十分麻烦,还有可能遗漏。所以我们需要一个统一的总的makefile来编译整个大项目。 项目结构请参照Makefile学习笔记06|编译动态链接库。我们在~/make/src/下创建一个makefile。#原创 2022-05-01 10:48:40 · 373 阅读 · 0 评论 -
Makefile学习笔记10|makefile获取shell结果实现目录创建判断
Makefile学习笔记10|makefile获取shell结果实现目录创建判断 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录 本节研究一下在makefile中如何执行shell脚本并得到其运行结果,进而改写、优化前面的makefile。可以将前面默认TARGET:=test改成默认TARGET为目录的名称。通过前面的学习,我们知道makefile分为目标、依赖、代码三个部分。代码部分就可以执行shell脚本。本节的侧重点是如何得到shell脚本的执行结果。原创 2022-04-30 14:24:41 · 1536 阅读 · 0 评论 -
Makefile学习笔记09|include外部文件定义统一的makefile头文件
Makefile学习笔记09|include外部文件定义统一的makefile头文件 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录 本节我们解决一个问题。前面我们写了很多makefile,但是里面涉及一个问题,就是多数项目的结构都是一样的。如果我们可以统一出一个makefile头文件,供所有的makefile引用,就可以降低项目维护的成本。以后开发的项目只需要移植现成的makefile,修改一些参数即可,这样可以有效提高开发效率。下面就学习如何导入外部mak原创 2022-04-30 12:49:00 · 1283 阅读 · 0 评论 -
Makefile学习笔记08|makefile函数使用wildcard自动添加
Makefile学习笔记08|makefile函数使用wildcard自动添加 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录函数简介 我们先从makefile自带的函数开始学习。wildcard展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表SRC=$(wildcard *.cpp *.cc)patsubst格式:$(patsubst,,)名称:模式字符串替换函数——patsubst。TMP=(patsubst(patsu原创 2022-04-29 11:28:02 · 996 阅读 · 0 评论 -
Makefile学习笔记目录
Makefile学习笔记目录Makefile学习笔记01|前言Makefile学习笔记02|动手编写第一个MakefileMakefile学习笔记03|g++编译的四个步骤Markfile学习笔记04|Makefile运行流程与变量Makefile学习笔记05|自动推导与伪目标Makefile学习笔记06|编译动态链接库Makefile学习笔记07|编译静态库并通过ifeq语句...原创 2022-04-27 10:46:32 · 614 阅读 · 0 评论 -
Makefile学习笔记07|编译静态库并通过ifeq语句
Makefile学习笔记07|编译静态库并通过ifeq语句 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 本篇与上一篇有较多联系,有兴趣的可以先看上一篇。编译静态链接库 xcom这个子项目模拟关于通讯的库,要编译成静态链接库。编译静态库一定要加选项-r,c和v可以不加。// xcom.h#ifndef XCOM_H#define XCOM_Hclass XCom{public: XCom();};#endif// xcom.cpp#includ原创 2022-04-27 10:32:08 · 1549 阅读 · 0 评论 -
Makefile学习笔记06|编译动态链接库
Makefile学习笔记06|编译动态链接库 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 动态链接库,就是程序在运行的时候再去加载的代码。因此,在编译时也与一般的代码不同。编译动态链接库涉及到库文件的路径和加载。编译选项-fPIC-shared g++ -shared -fPIC mylib.cpp -o libmylib.so g++ test.cpp -lmylib -L/root/cpp #!/bin/sh LD_LIBRARY_PATH=./;原创 2022-04-26 11:42:34 · 4526 阅读 · 0 评论 -
Makefile学习笔记05|自动推导与伪目标
Makefile学习笔记05|自动推导与伪目标自动推导 自动推导涉及到.o文件。开始之前需要先删除掉之前产生的.o文件和可执行文件first_make。rm *.o first_make 再修改一下makefile文件。# ~/make/src/first_make/makefile# $^ 依赖 不重复# $@ 目标# @ 不显示命令执行# - 发生错误后继续向后执行TARGET=first_makeLIBS=-lpthread# 修改一下上一节的makefile文件,把原创 2022-04-24 12:45:00 · 364 阅读 · 0 评论 -
Makefile学习笔记04|Makefile运行流程与变量
Markfile学习笔记04|Makefile运行流程与变量 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。Makefile运行流程make和makefilemakefile文件主要包含了5部分内容:显式规则.说明了如何生成一个或多个目标文件。由makefile文件的创作者指出,包括要生成的文件、文件的依赖文件、生成的命令。隐式规则。由于makefile有自动推导的功能,所以隐式的规则可以比较粗糙地简略书写makefile文件,这是由make所支持的。变量定义。原创 2022-04-22 00:10:49 · 554 阅读 · 0 评论 -
Makefile学习笔记03|g++编译的四个步骤
Makefile学习笔记03|g++编译的四个步骤 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。介绍 GCC(G++)编译的四个步骤分别是预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。 我们在配置项目时,首先要了解一个项目是如何一步步被编译出来的,是怎样从源码编译出可执行程序,最终又是如何被执行的。只有理清了其中的关系,我们才能快速定位问题,从而解决在编译中出现的问题。 g++编译的四个步骤原创 2022-04-21 12:50:08 · 2504 阅读 · 0 评论