github/gitignore · C.gitignore
C .gitignore 模板详解
说明 C.gitignore 忽略目标文件、静态与共享库、可执行文件、调试信息以及 Linux 内核模块构建文件的原因。
C.gitignore 按扩展名拦截编译器和链接器生成的中间文件与产物。为了让 gcc、clang、MSVC 都能使用,其中同时包含多个平台的扩展名。
它不处理 Make、CMake 等构建系统的文件。如果使用 CMake,请参考 CMake 模板,或包含 CMake 规则的 C++ 模板。
逐条规则详解
| 模式 | 忽略什么,为什么忽略 |
|---|---|
*.o*.obj*.ko*.elf*.d | 目标文件与依赖文件每个源文件生成的编译结果(.o、.obj)、内核模块(.ko)、ELF 二进制文件,以及编译器生成的头文件依赖列表(.d)。 |
*.gch*.pch | 预编译头GCC 和 MSVC 的 precompiled header。它们与编译器版本和选项绑定,无法在其他环境中使用。 |
*.lib*.a*.la*.lo*.dll*.so*.so.**.dylib | 库静态库(.a、.lib)、libtool 文件(.la、.lo)以及共享库。*.so.* 用于匹配 libfoo.so.1.2 这类带版本号的名称。 |
*.exe*.out*.app*.i*86*.x86_64*.hex | 可执行文件链接产物以及用于微控制器的 HEX 镜像。a.out 也会被 *.out 匹配。 |
*.dSYM/*.su*.idb*.pdb*.dwo | 调试信息macOS 符号包、GCC -fstack-usage 的结果(.su)、MSVC 调试数据库,以及拆分出的 DWARF(.dwo)。 |
*.mod**.cmd.tmp_versions/modules.orderModule.symversMkfile.olddkms.conf | Linux 内核模块构建内核构建系统(kbuild)生成模块时留下的文件。如果不开发驱动,几乎不会遇到。 |
*.ilk*.map*.exp | 链接器副产物MSVC 增量链接文件、链接器映射文件和导出文件。 |
实践中的注意事项
- 此模板不包含构建目录(
build/)。如果使用 out-of-source 构建,请直接添加/build/。 *.mod*会匹配所有以.mod开头的扩展名,如果有其他用途的.mod文件(例如数据文件),请设置例外。- 如果固件仓库需要保存用于发布的
.hex,请像!release/*.hex这样只重新包含特定路径。
原始模板
C.gitignore
# Prerequisites*.d# Object files*.o*.ko*.obj*.elf# Linker output*.ilk*.map*.exp# Precompiled Headers*.gch*.pch# Libraries*.lib*.a*.la*.lo# Shared objects (inc. Windows DLLs)*.dll*.so*.so.**.dylib# Executables*.exe*.out*.app*.i*86*.x86_64*.hex# Debug files*.dSYM/*.su*.idb*.pdb# Kernel Module Compile Results*.mod**.cmd.tmp_versions/modules.orderModule.symversMkfile.olddkms.conf# debug information files*.dwo
模板来源: github/gitignore/C.gitignore @356fd7b (2026-09-11) · CC0-1.0