728x90
make -j$(nproc)는 소스 코드를 빌드(컴파일)할 때 "내 컴퓨터의 CPU 코어 개수를 자동으로 파악해서, 그 수만큼 병렬로 최대한 빠르게 컴파일해라"라는 뜻입니다.
명령어를 조각내어 보면 쉽게 이해할 수 있습니다.
1. 명령 구성 요소 분석
- make: 소스 코드를 컴파일하고 실행 파일을 만드는 빌드 도구입니다. (Makefile에 적힌 순서대로 컴파일을 진행함)
- -j (또나 --jobs): Jobs의 약자로, 동시에 몇 개의 컴파일 작업을 실행(병렬 처리)할지 지정하는 옵션입니다.
- 예: make -j4 $\rightarrow$ 4개 작업을 동시에 병렬 처리
- $(nproc): Number of Processors의 약자로, 현재 시스템에서 사용 가능한 CPU 코어(스레드) 수를 출력하는 명령어입니다.
- 예를 들어 내 CPU가 8코어 16스레드라면 nproc 실행 시 16이 출력되며, 명령어 전체는 내부적으로 make -j16으로 해석됩니다.
2. 왜 이렇게 사용할까요?
단순히 make만 입력하면 CPU 코어 1개만 사용해서 순차적으로 컴파일합니다. 최신 컴퓨터에 코어가 8개, 16개가 있어도 1개만 일하기 때문에 빌드 시간이 매우 오래 걸립니다.
| 명령어 | 동작 방식 | 컴파일 속도 |
| make | 코어 1개만 사용 (단일 스레드) | 느림 🐢 |
| make -j$(nproc) | 모든 코어 동원 (최대 병렬 스레드) | 매우 빠름 🚀 |
💡 실무 팁 (Tip)
- 컴퓨터가 버벅거릴 때: CPU 점유율이 100%로 올라가면서 다른 작업(웹 서핑, IDE 등)이 멈칫할 수 있습니다. 이럴 때는 코어를 1~2개 남겨두고 돌리는 것이 좋습니다.
-
Bash
make -j$(($(nproc) - 1)) - Cmake와 함께 쓸 때: CMake 3.12 이상에서는 make 대신 아래 명령어로도 똑같이 모든 코어를 활용할 수 있습니다.
-
Bash
cmake --build . -j$(nproc)
728x90
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| 폐쇄망 RAG 시스템 구축 가이드2 (WSL2 Ubuntu + Docker + Qwen 3 8B + llama.cpp) (0) | 2026.08.11 |
|---|---|
| "cmake .. make -j$(nproc)"의 의미? (0) | 2026.08.11 |
| 러스트(RUST) | 어트리뷰트, 크레이트 (0) | 2026.08.11 |
| Emacs의 Ediff 기능 (0) | 2026.08.11 |
| Emacs 구분자 역슬래시(\) (0) | 2026.08.11 |