裁剪脚本

查找当前目录大于指定大小 #!/bin/bash # 遍历当前目录及子目录中的所有文件 find . -type f -exec du -b {} + | while read size file; do # 如果文件大小为50KB(即50 * 1024字节) if ; then echo \"文件:file, 大小: $((size / 1024)) KB\"

Cmake构建模版

# 指定 CMake 的最低版本要求。它应该是 CMakeLists.txt 文件中的第一个命令。 cmake_minimum_required(VERSION 3.10) # 定义项目的名称 project(mpp_webrtc) # 要编译的源文件,先收集在SRCS变量中。 file(GLOB SRCS \"*.c\" \"common/*.c\") # 编译源文件的头文件路径 include_dir

Linux系统编译生成镜像流程

编译内核 清除内核 命令 ${MAKE} O= mrproper 示例 make CROSS_COMPILE=riscv32-unknown-linux- ARCH=riscv -j16 O=kernel/build KERNEL_SRC=kernel/linux-5.4 INSTALL_MOD_PATH=kernel/staging O= mrproper 配置defconfig 命令 defc

内存地址对齐

内存地址对齐是在内存中的数据(具体为变量的地址、内存块的地址)按照指定地址长度对齐,包含了基本的变量数据对齐和结构体数据对齐。 为什么需要内存对齐? 可以提高CPU和内存交互的效率,比如一个32位的系统,CPU读取内存,硬件设计上只支持4字节或4字节的倍数对齐进行地址访问,CPU在每次访问内存时,一个周期可以访问4字节,如果要访问的数据是4字节对齐的地址,CPU一次就可以把数据访问完毕;如果访问的

kasan原理

kasan是什么?(基本原理) kasan是用于内存检测的工具,能够检测内存以下异常。 buffer-overflow in heap,stack and globals use-after-free uninitialized-memory-read user-memory-access 如若要支持kasan需要多划分1/8的内存用于内存检测的管理,如上图所示。分配的内存地址都是按字节对齐的,这

RISC-V动态链接实验

准备 实验环境 qemu linux启动环境: https://www.laumy.tech/1186.html 代码 动态库 cat swap.c #include <stdio.h> int shared = 1; int z; void swap(int *a, int *b) { printf(\" *a ^= *b ^= *a ^= *b; } 主程序 #include <

静态链接与动态链接

经过(https://www.laumy.tech/1085.html \\\\"ELF格式解析\\\\")章节描述,对ELF文件有了一定的了解,本章节继续来探讨处于链接阶段的:静态链接与动态链接。 静态链接 以下是本小节的实验代码。 ----> a.c extern int shared; int s; int main() { int a = 100; swap

ELF格式解析

编译过程 工具链把程序源文件翻译成可执行文件一般经理4个步骤:预处理、编译、汇编、链接。本章节关于静态链接和动态链接的过程主要就是在第4个过程。链接器会将输入目标文件(.o)经过加工后合并成一个输出文件,这里的输出文件以linux的ELF为例。链接器会将相同性质的段合并在一起,如将所有输入文件的\\\".text\\\"合并到输出文件的\\\".text\\\"段,接着是\\\".data\\\"段,\\\".bss\\\"段等