소스 컴파일 설치
쉽게 말하면
완성된 설치 상자 대신, 프로그램 설계도(소스 코드)를 받아 내 컴퓨터에서 직접 실행 파일로 만들어 설치하는 방법이에요. 원하는 대로 바꿀 수 있지만, 지우거나 업데이트할 때 손이 많이 가요.
시험용 정의
소스 설치는 프로그램의 원본 코드를 내려받아 내 시스템에서 직접 컴파일해 설치하는 방식이다. 최신 버전이나 원하는 옵션으로 빌드할 수 있지만, 패키지 관리자가 추적하지 않아 삭제·업데이트가 번거롭다.
비유로 이해하기
완제품 대신 재료와 레시피를 사서 직접 요리하는 것이다. 입맛대로 조절할 수 있지만 설거지(삭제·관리)도 직접 해야 한다.
자세히
그림으로 보기: 소스로 설치하는 순서
- 압축 풀기tar xvf 프로그램.tar.gz
- ./configure환경을 살펴 Makefile을 만든다 (--prefix로 설치 경로)
- makeMakefile대로 컴파일한다
- make install정한 경로에 복사한다 (보통 root로)
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 소스 코드 | 사람이 C 같은 프로그래밍 언어로 쓴 프로그램 원문. 그대로는 CPU가 실행할 수 없다 |
| 컴파일 | 소스 코드를 CPU가 실행할 수 있는 기계어 파일로 바꾸는 작업. 리눅스의 대표 컴파일러는 GNU의 gcc |
| 오브젝트 파일(.o) | 소스 파일 하나를 컴파일한 중간 결과물. 여러 .o를 라이브러리와 링크해 최종 실행 파일을 만든다 |
| Makefile과 make | Makefile은 "어떤 파일을 어떤 순서·옵션으로 컴파일하고 어디에 설치하나"를 적은 작업 지시서. 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. 컴파일 | make | Makefile대로 컴파일 (gcc 등) |
| 4. 설치 | make install | 지정 위치에 복사 (root 필요) |
| 정리 | make clean | 컴파일 결과물 삭제 (다시 빌드할 때) |
| 삭제 | make uninstall | Makefile이 지원할 때만 제거 |
관련 도구
gcc: GNU C 컴파일러. make: Makefile의 규칙대로 빌드를 자동화. cmake: 여러 플랫폼용 빌드 파일을 만드는 도구(cmake . → make). configure 도중 오류가 나면 보통 필요한 개발 라이브러리(-devel, -dev 패키지)가 없는 것이다. 문서는 README, INSTALL 파일에 있다.
시험에 나오는 그 밖의 말
| 말 | 뜻 |
|---|---|
| cmake를 쓰는 대표 프로젝트 | MySQL은 configure 대신 cmake로 빌드 환경(Makefile)을 만든다 |
시험에 이렇게 나와요
- 소스 설치 순서 → configure → make → make install
- Makefile을 만드는 단계 → configure(설치 경로 지정 --prefix도 여기서), 실제 컴파일 → make
- 컴파일로 생긴 파일 정리 →
make clean - cmake로 빌드하는 대표 프로젝트 → MySQL(나머지 보기는 configure·make 방식). cmake는 make 없이 Makefile을 만들어 준다
확인 문제
Q1. 소스 코드로 프로그램을 설치하는 일반적인 순서는?
- make → configure → make install
- tar → make install → configure
- make install → make → ./configure
- ./configure → make → make install
정답 보기
4번 ./configure → make → make install
./configure로 시스템 환경을 검사해 Makefile을 만들고, make로 컴파일하고, make install로 설치한다(보통 root 권한). 먼저 tar로 소스를 푼다.
Q2. 소스 설치에서 Makefile을 만들고 설치 경로를 지정하는 단계는?
- make install
- configure
- make clean
- make
정답 보기
2번 configure
./configure --prefix=경로.
Q3. 다음 중 configure 대신 cmake를 써서 빌드하는 것으로 알려진 프로그램은?
- PHP
- Apache httpd
- nmap
- MySQL
정답 보기
4번 MySQL
MySQL(5.5 이후)은 cmake로 빌드한다.
Q4. configure 스크립트가 생성하는 파일은?
- README
- config.h만
- install.sh
- Makefile
정답 보기
4번 Makefile
Makefile이다. configure가 시스템 환경을 살펴 Makefile을 만들고, make가 그 Makefile을 읽어 컴파일한다.
Q5. 소스 설치 시 설치 경로를 지정하는 configure 옵션은?
- --install
- --dir
- --prefix
- --path
정답 보기
3번 --prefix
--prefix다. ./configure --prefix=/usr/local/app처럼 프로그램을 설치할 기본 경로를 정한다.
Q6. 컴파일로 생성된 오브젝트 파일 등을 지우는 명령은?
- make delete
- make remove
- make purge
- make clean
정답 보기
4번 make clean
make clean이다. 컴파일 결과물을 지워 처음부터 다시 빌드할 수 있게 한다. make install은 설치, make는 컴파일이다.
헷갈리기 쉬운 O·X
소스로 설치한 프로그램은 rpm -qa 목록에 자동으로 나타난다.
정답 보기
X 패키지 관리자를 거치지 않아 추적되지 않는다.
make install은 보통 root 권한이 필요하다.
정답 보기
O /usr/local 등 시스템 디렉터리에 쓰기 때문.