
王利涛 - linux高级编程
来自 网络整理·免费领取学习资源
9,388 领取 · 9,508 收藏更新于 2026年9月20日
这份资料来自网络整理2026年的付费VIP课,内容以视频为主,对应《王利涛 - linux高级编程》。官网需要单独购买,有集上可以免费领取。
课程目录
- 第1期:C语言进阶路线学习指南
- 1.1 嵌入式C语言进阶学习路线指南_带片头
- 1.2 代码编译工具Vim使用命令
- 1.3 使用GCC、Make编译源程序
- 1.4 使用Git管理软件项目版本
- 第2期:计算机系统架构与ARM汇编语言
- 2.1 计算机体系结构
- 2.10 C和汇编混合编程
- 2.11 GNU ARM汇编语言
- 2.12 链接脚本
- 2.13 嵌入式系统启动流程
- 2.2 X86与ARM架构对比分析
- 2.3 C51与ARM架构对比分析
- 2.4 总线与地址
- 2.5 指令集、微架构与编译器
- 2.6 ARM体系结构与寻址方式
- 2.7 ARM汇编指令
- 2.8 ARM伪指令
- 2.9 ARM汇编程序与伪操作
- 第3期:程序的编译、链接和运行
- 3.1 程序的编译与可执行文件
- 3.10 程序的运行
- 3.11 BSS段的处理
- 3.12 main函数入口分析
- 3.13 链接静态库
- 3.14 动态链接(1):与位置无关的代码
- 3.15 动态链接(2):全局符号表GOT
- 3.16 动态链接(3):共享库
- 3.17 开发一个插件
- 3.18 内核模块加载机制
- 3.19 binutils工具集
- 3.2 GCC命令参数
- 3.20 linux内核加载实验
- 3.21 u-boot重定位分析(上)
- 3.22 u-boot重定位分析(下)
- 3.3 预处理过程
- 3.4 编译过程(1):从源程序到汇编文件
- 3.5 编译过程(2):汇编过程
- 3.6 编译过程(3):符号表
- 3.7 链接过程(1):地址空间分配与链接脚本
- 3.8 链接过程(2):符号解析-强符号与弱符号
- 3.9 链接过程(3):重定位
- 第4期:堆栈内存管理
- 4.1 程序与内存的关系
- 4.10 ucos堆内存管理
- 4.11 Linux堆内存管理(1):内存分配器
- 4.12 linux堆内存管理(2):内存申请与释放
- 4.13 Linux堆内存管理(3):内存申请释放示例
- 4.14 内存泄露与防范
- 4.15 常见内存错误及检测
- 4.16 实战&作业:实现自己的堆管理器
- 4.2 栈的初始化及大小
- 4.3 栈的管理:函数调用
- 4.4 栈的管理:参数传递
- 4.5 形参与实参
- 4.6 栈与作用域
- 4.7 栈溢出攻击原理
- 4.8 实战:栈溢出攻击示例
- 4.9 堆内存管理:内存申请与释放
- 第5期:Linux内核中的GNU C扩展语法
- 5.1 什么是C语言标准?
- 5.10 属性声明:const
- 5.11 属性声明:weak & alias
- 5.12 属性声明:constructor & destructor
- 5.13 属性声明:noinline & always_inline
- 5.14 属性声明:mode
- 5.15 属性声明:noreturn
- 5.16 属性声明:used & unused
- 5.17 内建函数
- 5.18 内建函数:__builtin_constant_p
- 5.19 内建函数:__builtin_expect
- 5.2 C标准发展过程及新增特性
- 5.20 case范围扩展
- 5.21 do{}while(0)
- 5.22 可变参数宏
- 5.23 局部标签
- 5.24 标号元素
- 5.3 语句表达式
- 5.4 typeof
- 5.5 container_of
- 5.6 零长度数组
- 5.7 属性声明:section
- 5.8 属性声明:aligned & packed
- 5.9 属性声明:format
- 第6期:数据存储与指针
- 6.1 存储才是C语言的精髓
- 6.10 常量存储
- 6.11 从变量到指针
- 6.12 一些复杂的指针声明
- 6.13 指针类型与运算
- 6.14 指针与数组的暧昧:下标运算
- 6.15 指针与数组的暧昧:数组名
- 6.16 指针与数组的暧昧:数值指针与指针数组
- 6.17 指针与结构体
- 6.18 二级指针:修改指针变量
- 6.19 二级指针:指针数组传参
- 6.2 存储的基本概念
- 6.20 二级指针:二维数组
- 6.21 指针函数与函数指针
- 6.22 重新认识void
- 6.3 有符号数和无符号数
- 6.4 数据溢出
- 6.5 数据对齐
- 6.6 数据类型转换
- 6.7 数据的可移植性
- 6.8 内核中的size_t数据类型
- 6.9 变量的本质
- 第7期:嵌入式数据结构和Linux面向对象思想
- 7.1 本期学习主要内容
- 7.10 队列:链式队列
- 7.11 Linux内核中的队列:KFIFO(上)
- 7.12 Linux内核中的队列:KFIFO(下)
- 7.13 代码复用与分层思想
- 7.14 面向对象编程:封装、继承与多态
- 7.15 Linux内核的面向对象思想:封装(上)
- 7.16 Linux内核的面向对象思想:封装(下)
- 7.17 Linux内核的面向对象思想:继承(上)
- 7.18 Linux内核的面向对象思想:继承(下)
- 7.19 Linux内核的面向对象思想:多态
- 7.2 数据结构基础
- 7.3 单向链表
- 7.4 单循环链表
- 7.5 双向链表
- 7.6 双向循环链表
- 7.7 Linux内核中的通用链表(上)
- 7.8 Linux内核中的通用链表(下)
- 7.9 队列:顺序队列
- 第8期:C语言的模块化编程
- 20.模块间通信(上):全局变量
- 21 模块间通信(中):回调函数
- 22 模块间通信(下):异步通信
- 23 模块设计进阶:跨平台设计
- 24 模块设计进阶:框架(framework)
- 8.1 如何从零做一碗炸酱面
- 8.10 头文件剖析:变量声明
- 8.11 头文件剖析:前向引用
- 8.12 头文件剖析:头文件路径(上)
- 8.13 头文件剖析:头文件路径(下)
- 8.14 Linux内核中的头文件
- 8.15 头文件之间的依赖关系
- 8.16 定义与声明的一致性
- 8.17 头文件中的内联函数
- 8.18 模块设计原则:高内聚低耦合
- 8.19 被误解的关键字:goto
- 8.2 模块的编译和链接(上)
- 8.3 模块的编译和链接(下)
- 8.4 系统模块划分
- 8.5 面向对象的思维陷阱
- 8.6 规划合理的目录结构
- 8.7 一个模块的封装过程
- 8.8 头文件剖析:基本概念
- 8.9 头文件剖析:隐式声明
- 第9期:CPU和操作系统入门
- 9.1 CPU和操作系统入门
- 9.10 中断(上):中断处理流程
- 9.11 中断(中):进程栈与中断栈
- 9.12 中断(下):中断函数的编写
- 9.13 存储器映射(上)
- 9.14 存储器映射(下)
- 9.15 存储抽象:文件系统
- 9.16 内存、外存与外设
- 9.17 IO端口与IO内存
- 9.18 位运算(上)
- 9.19 位运算(下)
- 9.2 多任务的裸机实现(上)
- 9.20 位域
- 9.21 内管管理单元MMU(上)
- 9.22 内存管理单元MMU(下)
- 9.23 本期小结
- 9.3 多任务的裸机实现(下)
- 9.4 调度器的工作原理
- 9.5 函数栈与进程栈
- 9.6 可重入函数
- 9.7 临界区与临界资源
- 9.8 系统调用(上)
- 9.9 系统调用(下)
- C语言嵌入式Linux高级编程配套代码
包含内容
- · 第1期:C语言进阶路线学习指南
- · 1.1 嵌入式C语言进阶学习路线指南_带片头
- · 1.2 代码编译工具Vim使用命令
- · 1.3 使用GCC、Make编译源程序
- · 1.4 使用Git管理软件项目版本
- · 第2期:计算机系统架构与ARM汇编语言
- · 2.1 计算机体系结构
- · 2.10 C和汇编混合编程
贡献者
Jason
白银
学习社区
1 人正在学习
编程与技术实践交流
交流编程基础、项目实践、数据库和部署问题。提问请说明环境、复现步骤与已尝试的方法。