공든탑앱 열기

소스 컴파일 설치

리눅스마스터 2급 · 소프트웨어 설치 · 약 9분

쉽게 말하면

완성된 설치 상자 대신, 프로그램 설계도(소스 코드)를 받아 내 컴퓨터에서 직접 실행 파일로 만들어 설치하는 방법이에요. 원하는 대로 바꿀 수 있지만, 지우거나 업데이트할 때 손이 많이 가요.

시험용 정의

소스 설치는 프로그램의 원본 코드를 내려받아 내 시스템에서 직접 컴파일해 설치하는 방식이다. 최신 버전이나 원하는 옵션으로 빌드할 수 있지만, 패키지 관리자가 추적하지 않아 삭제·업데이트가 번거롭다.

비유로 이해하기

완제품 대신 재료와 레시피를 사서 직접 요리하는 것이다. 입맛대로 조절할 수 있지만 설거지(삭제·관리)도 직접 해야 한다.

자세히

그림으로 보기: 소스로 설치하는 순서

  1. 압축 풀기tar xvf 프로그램.tar.gz
  2. ./configure환경을 살펴 Makefile을 만든다 (--prefix로 설치 경로)
  3. makeMakefile대로 컴파일한다
  4. make install정한 경로에 복사한다 (보통 root로)
configure가 Makefile을 만들고, make가 그것을 읽는다

먼저 알아 둘 말

말뜻
소스 코드사람이 C 같은 프로그래밍 언어로 쓴 프로그램 원문. 그대로는 CPU가 실행할 수 없다
컴파일소스 코드를 CPU가 실행할 수 있는 기계어 파일로 바꾸는 작업. 리눅스의 대표 컴파일러는 GNU의 gcc
오브젝트 파일(.o)소스 파일 하나를 컴파일한 중간 결과물. 여러 .o를 라이브러리와 링크해 최종 실행 파일을 만든다
Makefile과 makeMakefile은 "어떤 파일을 어떤 순서·옵션으로 컴파일하고 어디에 설치하나"를 적은 작업 지시서. make는 이 지시서대로 컴파일을 실행하는 도구다
configure내 시스템에 컴파일러·필요한 라이브러리가 있는지 검사하고, 설치 경로 같은 옵션을 반영해 Makefile을 만들어 주는 셸 스크립트. cmake는 같은 일을 하는 다른 도구다

단계별

단계명령하는 일
1. 풀기tar xzvf app-1.0.tar.gz; cd app-1.0소스 압축 해제
2. 환경 설정./configure --prefix=/usr/local/app컴파일러·라이브러리 검사, Makefile 생성. --prefix는 설치 위치(기본 /usr/local)
3. 컴파일makeMakefile대로 컴파일 (gcc 등)
4. 설치make install지정 위치에 복사 (root 필요)
정리make clean컴파일 결과물 삭제 (다시 빌드할 때)
삭제make uninstallMakefile이 지원할 때만 제거

관련 도구

gcc: GNU C 컴파일러. make: Makefile의 규칙대로 빌드를 자동화. cmake: 여러 플랫폼용 빌드 파일을 만드는 도구(cmake . → make). configure 도중 오류가 나면 보통 필요한 개발 라이브러리(-devel, -dev 패키지)가 없는 것이다. 문서는 README, INSTALL 파일에 있다.

시험에 나오는 그 밖의 말

말뜻
cmake를 쓰는 대표 프로젝트MySQL은 configure 대신 cmake로 빌드 환경(Makefile)을 만든다

시험에 이렇게 나와요

확인 문제

Q1. 소스 코드로 프로그램을 설치하는 일반적인 순서는?

  1. make → configure → make install
  2. tar → make install → configure
  3. make install → make → ./configure
  4. ./configure → make → make install
정답 보기

4번 ./configure → make → make install

./configure로 시스템 환경을 검사해 Makefile을 만들고, make로 컴파일하고, make install로 설치한다(보통 root 권한). 먼저 tar로 소스를 푼다.

Q2. 소스 설치에서 Makefile을 만들고 설치 경로를 지정하는 단계는?

  1. make install
  2. configure
  3. make clean
  4. make
정답 보기

2번 configure

./configure --prefix=경로.

Q3. 다음 중 configure 대신 cmake를 써서 빌드하는 것으로 알려진 프로그램은?

  1. PHP
  2. Apache httpd
  3. nmap
  4. MySQL
정답 보기

4번 MySQL

MySQL(5.5 이후)은 cmake로 빌드한다.

Q4. configure 스크립트가 생성하는 파일은?

  1. README
  2. config.h만
  3. install.sh
  4. Makefile
정답 보기

4번 Makefile

Makefile이다. configure가 시스템 환경을 살펴 Makefile을 만들고, make가 그 Makefile을 읽어 컴파일한다.

Q5. 소스 설치 시 설치 경로를 지정하는 configure 옵션은?

  1. --install
  2. --dir
  3. --prefix
  4. --path
정답 보기

3번 --prefix

--prefix다. ./configure --prefix=/usr/local/app처럼 프로그램을 설치할 기본 경로를 정한다.

Q6. 컴파일로 생성된 오브젝트 파일 등을 지우는 명령은?

  1. make delete
  2. make remove
  3. make purge
  4. make clean
정답 보기

4번 make clean

make clean이다. 컴파일 결과물을 지워 처음부터 다시 빌드할 수 있게 한다. make install은 설치, make는 컴파일이다.

헷갈리기 쉬운 O·X

소스로 설치한 프로그램은 rpm -qa 목록에 자동으로 나타난다.

정답 보기

X 패키지 관리자를 거치지 않아 추적되지 않는다.

make install은 보통 root 권한이 필요하다.

정답 보기

O /usr/local 등 시스템 디렉터리에 쓰기 때문.

함께 보면 좋은 개념