github/gitignore · C.gitignore
C .gitignore 템플릿 해설
C.gitignore가 오브젝트 파일, 정적·공유 라이브러리, 실행 파일, 디버그 정보, 리눅스 커널 모듈 빌드 파일을 무시하는 이유를 설명합니다.
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 | 리눅스 커널 모듈 빌드커널 빌드 시스템(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