avatar
Articles
127
Tags
0
Categories
17
首页
归档
友链
李瑞琦的博客
首页
归档
友链

李瑞琦的博客

多进程编程
Updated2025-10-31|01-计算机基础八股
多进程编程1.程序和进程1.1程序如何被调用 通常我们的一个程序都由main()函数开始,那么main()函数又是如何被调用的呢? 操作系统内核中实现了一个叫加载器的程序,该程序在我们准备运行某个程序时,负责将我们要运行的程序加载到内存中去执行。 int main(int argc, char *argv[]) 中的那些参数是如何传入的? 在运行一个程序的main()函数之前,需要运行该程序的引导代码,引导代码是在编译后被链接器加到可执行文件中的,不需要人为去编写。当我们在终端中运行一个程序并传入参数arg1 arg2...时,shell会解析这些参数并传给加载器,加载器在加载程序时会把这些参数再传给引导代码,由引导代码传入这些参数到main()中。 1.2程序如何被终止一个进程的终止可以分为:正常终止和异常终止 正常终止: 在main()中return...
文件系统
Updated2025-10-31|01-计算机基础八股
文件系统总览定义:文件系统是负责管理和存储文件信息的软件(一般由OS提供),它会在==存储介质中建立一种特定的组织结构==(不同文件系统不同)包含操作系统引导区,inode区、目录,文件等 这样看这个概念可能比较晦涩难懂,说了跟没说一样,下面举个例子: 之前在使用W25Q64这个Flash芯片的时候,由于没有使用文件系统,它有一下这些缺点: 往里写数据、读数据的时候都得指定Flash上的具体的地址 有效数据的位置不方便记录,如果想使用存进去的数据,还得额外手记什么数据存到哪个地址里了 并且数据都是以page(256...
docker
Updated2025-10-31|02-开发工具
Docker常用CLI指令镜像相关 docker pull:下载一个镜像 docker build -t :编译一个镜像 docker imags:查看所有已有镜像 docker image rm :删除一个镜像 容器相关 docker run:创建并运行一个容器,处于运行状态,它包含以下常见指令: 基础参数: -d:后台运行容器 -it:交互终端运行 –name:指定容器名称 –rm:容器退出后自动删除 -w:设置工作目录 资源限制 网络配置: -p:端口映射 –net:网络模式 环境变量: -e / –env: 设置环境变量 用户: -u:指定用户 docker pause:让一个运行的容器暂停 docker unpause:让一个容器从暂停状态恢复运行 docker stop:停止一个运行的容器 docker start:让一个停止的容器再次运行 docker rm:删除一个容器 docker ps:查看当前正在运行的容器 docker ps -a:查看所有容器(包含已经停止了的) docker...
gdb
Updated2025-10-31|02-开发工具
gdbgdb是gcc工具链中的调试器,本身是个命令行的可执行程序,以往我们用vscode、Qt Creator调试程序的时候,底层用的都是gdb工具,不过这些IDE把他的数据给可视化了 1.gdb中常见指令启动与连接 命令 说明 gdb <executable> 启动GDB并加载可执行文件 gdb -p <pid> 附加到正在运行的进程 target remote :<port> 连接远程gdbserver(常用于嵌入式调试) target remote /dev/ttyUSB0 通过串口连接目标板(如ARM开发板) 断点与观察点 命令 说明 break <function> 在函数入口设断点(如 break main) break *<address> 在内存地址设断点(如 break *0x8000) break <file:line> 在指定文件的某一行设断点(如 break driver.c:42) watch...
git
Updated2025-10-31|02-开发工具
git使用笔记1.用户初始化12git config --global user.name "Li-Ruiqi"git config --global user.email "1009962019@qq.com" 提交代码时会显示这里配置的user的信息 不加--global也行,就是配置当前仓库 2.提交一个PR12345git checkout -b feature/xxx # 创建新分支并切换# 进行代码修改git add.git commit -m "提交信息"git push origin feature/xxx 3.切换到某个提交(commit) 如果check out到当前最新节点之前的某个节点,修改代码并提交,再切换回最新节点,会发现刚才的commit消失了,并没在该分支中 12345678910# 列出提交历史来找git graph中消失的commitgit log# 或者git reflog#切换git checkout...
Makefile
Updated2025-10-31|02-开发工具
Makefile总览定义:Makefile是一个自动化编译工具,用于定义文件依赖关系与构建规则 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释 显示规则显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出:要生成的目标,目标的依赖文件,生成的命令。其格式如下: 12目标: 依赖文件 命令 # 必须用Tab缩进 make 会检查目标文件的时间戳,若依赖文件比目标新,则重新执行命令 若目标文件已存在且依赖无变化,跳过构建(增量编译) 1.伪目标:用于执行非文件生成的操作(如清理、安装等),需通过 .PHONY 显式声明 12345.PHONY: clean installclean: rm -f *.o appinstall: cp app /usr/local/bin/ 2.默认目标:一个Makefile中可以定义多个目标,当我们使用make命令但不指定具体的目标时,默认生成第一个目标 3.中间文件目标:临时生成的文件(如 .o 文件),可通过 .INTERMEDIATE...
wsl
Updated2025-10-31|02-开发工具
WSL遇到的问题1.开启WSL2后,VMWare老卡死 VMware虚拟机经常性卡死,打开运行一段时间后卡死 WSL、Docker、Hyper-V、VMWare共存方案 WSL2和VMWare因为Hyper-V虚拟化的原因,不能很好的共存,如果要开启WSL2的话,就得开启Hyper-V虚拟化,这可能导致VMWare运行的时候卡死。所以如果要用VMWare的话,就暂时把Hyper-V关了吧 Hyper-V开/关方法: 1234# 开启:bcdedit /set hypervisorlaunchtype auto # 然后重启# 关闭:bcdedit /set hypervisorlaunchtype off # 然后重启 重启后可以在终端中输入wsl验证,如果不能进ubuntu的终端,就说明关闭成功了
01 CMake的基本用法
Updated2025-10-31|02-开发工具CMake
CMake基本用法1.CmakeListsCmakeLists.txt是 cmake 的构建定义文件,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt 2.CMake的语法 现代CMake和之前CMake的区别: 现代CMake是面向Tartget的,什么添加头文件、库的路径都是针对某个Target添加而不是对整个目录都添加进去。 cmake_minimum_required() 添加CMake编译的最低版本 project() 命名该CMake工程 add_executable(<name> [source1] [source2 ...]) 指定该工程编译将生成.exe的可执行文件 add_library(<name> [STATIC|SHARED|MODULE] [source1] [source2 ...]) 指定该工程编译生成静态/动态库 aux_source_directory(dir...
02 QMake的基本用法
Updated2025-10-31|02-开发工具CMake
QMake的基本用法QMake是和CMake类似的项目组织工具,不过比CMAKE简单不少 官方文档:https://doc.qt.io/qt-5/qmake-manual.html 本地的Qt安装目录也有,和官方文档一致 1.QMake添加源/头/UI等文件12345678910111213SOURCES += \ $$files(UserAPP/Src/*.cpp) \ $$files(UserAPP/Src/*.c) \# main.cpp \# mainwindow.cppHEADERS += \ $$files(UserAPP/Inc/*.h)# mainwindow.hINCLUDEPATH += UserAPP/Inc/FORMS += \# ...
03 find_package用法
Updated2025-10-31|02-开发工具CMake
find_package()的用法作用主要就是通过库对应的.cmake文件(由库的维护者提供,一般用不着自己写),获得第三方库的头文件以及动/静态库文件的路径,方便我们直接添加到我们自己的工程里面 <PackageName>_FOUND :找到了就是True,没找到就是未设定 <PackageName>_INCLUDE_DIR :头文件目录 <PackageName>_LIBRARY...
123…13
avatar
Li Ruiqi
总有低谷
Articles
127
Tags
0
Categories
17
Follow Me
Categories
  • 01-计算机基础八股12
  • 02-开发工具12
    • CMake7
  • 03-C++14
  • 04-Linux52
    • 01-Linux基本操作8
    • 02-系统移植9
    • 03-内核开发24
    • 04-应用开发8
    • 05-安卓开发3
  • 05-MCU28
    • 01-FreeRTOS7
    • 02-STM329
    • 03-MSP4304
    • 04-LVGL4
  • 06-嵌入式硬件5
  • 07-RISC-V4
Website Info
Article Count :
127
Unique Visitors :
Page Views :
Last Update :
©2019 - 2025 By Li Ruiqi
Framework Hexo|Theme Butterfly
人因梦想而伟大