Linux内核源码相关操作整理_linux 安装内核源码指令(1)

defconfig - 脚本判断当前ARCH,然后创建当前Arch版本的默认配置文件“.config”
savedefconfig - 将当前配置保存为 ./defconfig(最小配置)
allnoconfig - 创建所有选项均为“no”的新配置文件
allyesconfig - 创建所有选项均为“yes”的新配置文件
allmodconfig - 创建新的配置文件,将所有可以编译成模块的都选择编译成模块
(编译成模块的内容会在initramfs文件的/lib/modules/xxx/xxx.ko,而选择y则会编译到vmlinux文件中)
alldefconfig - 将所有符号设置为默认值的新的配置文件
randconfig - 随机所有选项,然后创建为新配置文件
yes2modconfig - 将“yes”选项全更改为“mod”
mod2yesconfig - 将“mod”选项更改为“yes”
mod2noconfig - 将“mod”选项更改为“no”
listnewconfig - 列出新的,当前目录下“.config”文件没有的选项
helpnewconfig - 列出新的选项和帮助文本
olddefconfig - 类似于 oldconfig,但将新的符号设置为其默认值,无提示
tinyconfig - 配置尽可能小的内核
testconfig - 运行 Kconfig 单元测试(需要 python3 和 pytest)


## 其他通用:



all - 构建所有标有 [*] 的目标

vmlinux - 构建裸内核
modules - 构建所有模块
modules_install - 将所有模块安装到 INSTALL_MOD_PATH 目录(默认为 /)
dir/ - 构建dir目录中及其子目录中的所有文件
dir/file.[ois] - 仅构建指定dir下的目标文件
dir/file.ll - 构建 LLVM 汇编文件(需要编译器支持 LLVM 汇编生成)
dir/file.lst - 仅构建指定的混合源/汇编目标(需要较新的 binutils 和最新的构建(System.map))
dir/file.ko - 构建模块,包括最终链接
modules_prepare - 设置用于构建外部模块的环境
tags/TAGS - 为编辑器生成 tags 文件
cscope - 生成 cscope 索引,cscope是一个浏览代码linux插件
gtags - 生成 GNU GLOBAL 索引
kernelrelease - 输出版本信息(与 make -s 一起使用)
kernelversion - 输出存储在 Makefile 中的版本信息(与 make -s 一起使用)
image_name - 输出镜像存放目录(与 make -s 一起使用)
headers_install - 安装经过清理的内核头文件到 INSTALL_HDR_PATH(默认为 ./usr)


## Rust相关:



rustavailable - 检查 Rust 工具链是否可用,并在不可用时解释原因
rustfmt - 重新格式化内核中的所有 Rust 代码
rustfmtcheck - 检查内核中的所有 Rust 代码是否已格式化,否则打印差异
rustdoc - 生成 Rust 文档(需要内核 .config)
rusttest - 运行 Rust 测试(需要内核 .config,同时下载相关包)
rust-analyzer - 生成 rust-project.json rust-analyzer 支持文件(需要内核 .config)
dir/file.[os] - 仅构建指定的目标
dir/file.rsi - 构建宏展开的源文件,类似于 C 中的预处理,输出的内容不用于编译


## 内核单测相关:



kselftest - 构建并运行内核单测
(会先构建、安装和引导内核, 需要用root运行)
kselftest-all - 构建内核自测试
kselftest-install - 构建并安装内核单测
kselftest-clean - 删除所有生成的 kselftest 文件
kselftest-merge - 将 kselftest 的所有配置依赖项合并到现有 .config 中


## 工具相关:



nsdeps - 生成缺失符号的命名空间依赖项


## 静态分析器相关:



checkstack - 生成栈溢出列表
versioncheck - 对 version.h 的使用进行健全性检查
includecheck - 检查是否有重复包含的头文件
export_report - 列出所有导出符号的使用情况
headerdep - 检测头文件中的循环包含
coccicheck - 使用 Coccinelle 进行检查
clang-analyzer - 使用 Clang 静态分析器进行检查
clang-tidy - 使用 Clang-Tidy 进行检查


## 内核打包相关:



rpm-pkg - 构建源码和二进制 RPM 内核包
binrpm-pkg - 仅构建二进制内核 RPM 包
deb-pkg - 构建源码和二进制 deb 内核包
bindeb-pkg - 仅构建二进制内核 deb 包
snap-pkg - 仅构建二进制内核 snap 包(需要连接网络)
dir-pkg - 以纯目录结构构建内核
tar-pkg - 以未压缩的 tar 包形式构建内核
targz-pkg - 以 gzip 压缩的 tar 包形式构建内核
tarbz2-pkg - 以 bzip2 压缩的 tar 包形式构建内核
tarxz-pkg - 以 xz 压缩的 tar 包形式构建内核
tarzst-pkg - 以 zstd 压缩的 tar 包形式构建内核
perf-tar-src-pkg - 构建 perf-xxx.tar 源码 tar 包
perf-targz-src-pkg - 构建 perf-xxx.tar.gz 源码 tar 包
perf-tarbz2-src-pkg - 构建 perf-xxx.tar.bz2 源码 tar 包
perf-tarxz-src-pkg - 构建 perf-xxx.tar.xz 源码 tar 包
perf-tarzst-src-pkg - 构建 perf-xxx.tar.zst 源码 tar 包


## 构建文档相关:



内核源码下只保存文档的ReST(reStructuredText)格式,其他格式需要通过构建生成:
htmldocs - 生成HTML 格式
latexdocs - 生成LaTeX 格式
pdfdocs - 生成PDF 格式
epubdocs - 生成EPUB 格式
xmldocs - 生成XML 格式
linkcheckdocs - 检查外部链接的可用性(需要连接网络)
refcheckdocs - 检查对不存在文件的引用(位于 Documentation 目录下)
cleandocs - 清理所有生成的文档相关的文件

“make SPHINXDIRS=“s1 s2” [target]” - 生成特定文件夹 s1 和 s2 的文档
SPHINXDIRS 的值可为这些:PCI RCU accounting admin-guide arc arm arm64 block bpf cdrom core-api cpu-freq crypto dev-tools devicetree doc-guide driver-api fault-injection fb filesystems firmware-guide fpga gpu hid hwmon i2c ia64 iio infiniband input isdn kbuild kernel-hacking leds livepatch locking loongarch m68k maintainer mhi mips misc-devices mm netlabel networking nios2 openrisc parisc pcmcia peci power powerpc process riscv rust s390 scheduler scsi security sh sound sparc spi staging target timers tools trace translations usb userspace-api virt w1 watchdog x86 xtensa

“make SPHINX_CONF={conf-file} [target]” 可以使用额外的 sphinx-build 配置进行构建。对于使用 nit-picking 配置进行构建很有用。

“make DOCS_THEME={sphinx-theme}” 选择不同的 Sphinx 主题。

“make DOCS_CSS={a .css file}” 为 html/epub 输出添加 DOCS_CSS 重写文件。

生成的文档的默认位置为 Documentation/output


## 特定架构相关(x86):



bzImage - 构建压缩的内核映像(arch/x86/boot/bzImage)
install - 使用自己的“~/bin/installkernel”或“/sbin/installkernel”来安装内核,或将其安装到 $(INSTALL_PATH) 并运行 lilo
fdimage - 创建 1.4MB 引导软盘映像(arch/x86/boot/fdimage)
fdimage144 - 创建 1.4MB 引导软盘映像(arch/x86/boot/fdimage)
fdimage288 - 创建 2.8MB 引导软盘映像(arch/x86/boot/fdimage)
hdimage - 创建 BIOS/EFI 硬盘映像(arch/x86/boot/hdimage)
isoimage - 创建启动 CD-ROM 映像(arch/x86/boot/image.iso)
bzdisk/fdimage*/hdimage/isoimage可接受如下参数:
FDARGS=“…” 作为启动内核的参数
FDINITRD=file 作为启动内核的 initrd 文件
kvm_guest.config - 启用 KVM 客户机运行该内核的 Kconfig 项目
xen.config - 启用 Xen 客户机运行该内核的 Kconfig 项目
x86_debug.config - 启用 tip 树调试选项进行测试
i386_defconfig - 为 i386 构建
x86_64_defconfig - 为 x86_64 构建

“make V=0|1 [targets]” 0 => 静默构建(默认),1 => 详细构建
“make V=2 [targets]” 2 => 详细输出构建目标的过程
“make O=dir [targets]” 将所有输出文件(包括 .config)放在 “dir” 中定位
“make C=1 [targets]” 通过 $CHECK(默认为 sparse)检查重新编译的 c 源文件
“make C=2 [targets]” 强制使用 $CHECK 检查所有 c 源文件
“make RECORDMCOUNT_WARN=1 [targets]” 警告忽略的 mcount 部分
“make W=n [targets]” 启用额外的构建检查,n=1,2,3,其中:
1: 可能相关且不经常发生的警告
2: 经常发生但仍可能相关的警告
3: 更加深奥的警告,可能可以忽略
e: 将警告视为错误
可以通过 W=12 或 W=123 组合多个级别


## 其他工具

## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/9a0c1751252f1cb126af74f5faca7d7b.png)

![img](https://img-blog.csdnimg.cn/img_convert/0ddea91696af12ed926d206ce3321b24.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/e7e122b983c708d90eb0b15bc9364e61.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/948e354567a0ec0f38fe7db694c046f8.png)

![img](https://img-blog.csdnimg.cn/img_convert/459df3ad1d70d2bd54defbba7d8a1837.png)

![img](https://img-blog.csdnimg.cn/img_convert/4a99d6f8494f4d95a9538469b33f73d8.png)

![](https://img-blog.csdnimg.cn/img_convert/1e8ade8ea35f6eeda48c979af9dd46d9.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值