나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2026-03-21 19:28:17

distcc


[[이론 컴퓨터 과학|'''이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#a36,#a36> 이론
기본 대상 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버 · 디지털 물리학
오토마타 이론 FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어
계산 복잡도 이론 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법, 분할 정복 알고리즘)
정보이론 정보 엔트로피 · 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어론 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타프로그래밍 · 람다 대수 · 타입 이론 · 프로그래밍 언어 의미론 · 어휘 분석 · 파싱 · 구문 트리(완전 구문 트리 · 추상 구문 트리) · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^벡터^ · 리스트^연결 리스트^ · 셋(set) · 트리^이진 트리(레드-블랙 트리, ), B-트리, 피보나치 힙^ · · 스택
수학적 최적화 <keepall> 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
<keepall> 볼록 최적화 내부점 방법 · 경사하강법
<keepall> 선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호 · 난수생성
<keepall> 대칭키 암호화 방식 블록 암호 알고리즘(파이스텔 네트워크 · DES · AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
<keepall> 공개키 암호화 방식 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}

1. 개요2. 작동 원리3. 초기 개발자4. distcc의 계보5. 관련 문서

1. 개요

distcc(Distributed C/C++)는 네트워크에 연결된 다른 PC들의 CPU 자원을 빌려와서 컴파일하는 방식이다. 주로 리눅스유닉스계열에 사용한다.

2. 작동 원리

메인 PC(예시 데비안)이 전처리(Preprocessing)를 하고, 실제 컴파일 작업만 네트워크상의 다른 '자원 봉사' PC들에게 뿌린 뒤 결과물만 다시 가져오는 방식이다.
컴파일에서 주요한 효과를 기대할수있도록 설계되었다. 서브 PC가 여러 대 있다면 빌드 시간이 드라마틱하게 줄어든다.[1]

3. 초기 개발자

컴파일 속도 전쟁인 2000년대 초반, 리눅스 커널이나 대형 프로젝트(Samba 등)를 빌드하는 데 시간이 너무 오래 걸렸던 상황에서 노는 CPU 활용이라는 아이디어로 사무실에 PC는 많은데 정작 컴파일할 때는 내 컴퓨터만 고생하지 않고 다른 컴퓨터들과 "네트워크로 연결된 다른 컴퓨터들한테 일감을 나눠주자!"라는 해결책 아이디어로 탄생했다.
초기 개발자들로는 마틴 풀(Martin Pool)과 라이브저널(LiveJournal)의 창시자이자, 나중에 구글에서 Go 언어 설계에도 참여했던 천재 개발자로 알려진 브래드 패트릭(Brad Fitzpatrick)이 알려져있다.

4. distcc의 계보

설계 철학: 복잡한 설정 없이 "그냥 컴파일러만 네트워크로 던진다"는 아주 심플하고 강력한 철학을 가지고 시작됬다.
보안: 초기에는 보안이 취약했지만, 나중에 SSH를 통한 암호화 전송 기능이 추가되면서 외부 서버와도 안전하게 빌드 팜을 구성할 수 있게 되어 점차 빌드 시스템의 물리적 협업에 영감을 주는 기초적인 모델이 되고있다.

5. 관련 문서

*베오울프 클러스터

[1] 데비안에서의 설정: sudo apt install distcc 설치 , /etc/default/distcc에서 ALLOWEDNETS에 네트워크 대역 설정 , 컴파일 시 CC="distcc gcc" 같은 방식으로 지정하거나 make -j 수치를 전체 네트워크 코어 합산만큼 높여서 사용할수있다.