Configure
1. 개요
Configure는 소프트웨어를 소스 코드로부터 컴파일하고 실행 파일로 설치하기 전에, 시스템에 맞게 조정하는 스크립트이다. Makefile 생성, 소스 컴파일, 실행 파일 설치 단계를 거치는 과정의 첫 단계에 해당하며, `./configure` 명령을 통해 실행된다. 이 스크립트는 `config.log`에 보고서를 출력하고, `--help` 옵션을 통해 명령줄 매개변수를 확인할 수 있다. 개발자들은 GNU Autotools를 사용하여 크로스 플랫폼 소프트웨어 개발을 단순화하며, configure 스크립트는 환경 설정, 플랫폼 아키텍처, 의존성 정보를 수집하여 `configure.ac`에 저장한다. 최초의 configure 스크립트는 1984년 래리 월이 개발한 rn 프로그램에 탑재되었으며, 이후 Autoconf와 같은 자동화 도구가 개발되었다. 신규 개발에서는 pkg-config를 통해 라이브러리 의존성을 검사한다.
| 이름 | Configure 스크립트 |
|---|---|
| 유형 | 실행 가능한 셸 스크립트 |
| 용도 | 소프트웨어 패키지 빌드 구성 |
| 개발자 | GNU 프로젝트 및 기타 |
| 관련 파일 | Makefile, config.log |
| 기능 | 시스템 정보 수집 빌드 옵션 설정 Makefile 생성 |
| 역할 | 소스 코드 컴파일 및 설치 준비 |
|---|---|
| 작동 방식 | 시스템 환경 변수, 라이브러리 존재 여부 등을 확인 |
| 사용자 정의 | 다양한 옵션 지정 가능 (예: 설치 경로, 컴파일러 선택) |
| 사용 예시 | ./configure && make && make install |
| 장점 | 이식성 향상 빌드 과정 자동화 사용자 환경에 맞춘 설정 가능 |
| 단점 | 복잡한 설정 시 어려움 발생 가능 |
| Autoconf | configure 스크립트 생성 도구 |
|---|---|
| Automake | Makefile 생성 도구 |
| Libtool | 라이브러리 빌드 도구 |
| 중요성 | 오픈 소스 소프트웨어 빌드 과정에서 핵심적인 역할 수행 |
|---|---|
| 참고 자료 | GNU Autoconf 매뉴얼, 관련 온라인 문서 |
-
컴파일 도구 -
Libtool
Libtool은 다양한 유닉스 계열 운영 체제에서 정적 및 동적 라이브러리 생성을 관리하고, 운영 체제별 차이로 인한 소프트웨어 이식 문제를 해결하기 위해 GNU 빌드 시스템에서 사용되는 도구이다. -
컴파일 도구 -
GNU 빌드 시스템
GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다. -
빌드 자동화 -
GNU 빌드 시스템
GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다. -
빌드 자동화 -
MSBuild
MSBuild는 마이크로소프트에서 개발한 빌드 자동화 도구로서, 프로젝트 파일에 기술된 대상을 실행하여 빌드 과정을 자동화하며, Team Foundation 빌드와 연동하여 팀 빌드 환경을 구성하는 데 사용된다.
2. 사용
소프트웨어를 소스 코드로부터 직접 가져오는 일은 일반적으로 makefile 구성, 소스 컴파일, 적절한 곳에 실행 파일 최종 설치와 같은 단계들을 거친다. configure 스크립트는 이러한 단계들 가운데 첫 단계를 수행한다. configure 스크립트를 사용하는 것은 컴파일 이전에 makefile을 생성하는 자동화된 방식이며, 소프트웨어가 실행 파일이 컴파일되고 실행될 수 있도록 시스템에 맞게 조정한다. 최종 실행 소프트웨어는 소스 코드를 포함한 현재 디렉터리를 가리키는 셸에서 다음 명령을 실행하여 얻을 수 있다.
:
./configure
make
make install
단순히
configure 대신 ./configure를 사용해야 스크립트가 현재 디렉터리에 있음을 셸에게 지시할 수 있다. 기본적으로 보안상의 이유로 유닉스 계열 운영 체제들은 실행 파일에 대해 현재 디렉터리를 검색하지 않으므로, 전체 경로를 명시해 주어야 오류를 피할 수 있다.작업을 마치면
configure는 config.log에 보고서를 출력한다. ./configure --help를 실행하면 명령 줄 매개변수를 보여주며, 다음과 같은 추가 기능을 켜고 끌 수 있다.:
./configure --libs="-lmpfr -lgmp"
./configure --prefix=/home/myname/apps
첫 번째 줄은
mpfr과 gmp 라이브러리를 포함한다. 두 번째 줄은 make에 마지막 버전을 /home/myname/apps에 설치할 것을 지시한다. 매개변수 안에 공백 문자가 있으면 인용 부호로 감싸 주어야 한다.소스 코드가 있는 디렉터리로 명령줄 셸을 탐색한 후, 일반적으로 다음 명령을 실행한다.
:
./configure
make
make install
Autotools의 경우, configure 스크립트는 상태 및 오류를 config.log 파일에 기록하며,
./configure --help 명령은 명령줄 도움말 정보를 출력한다.종종
INSTALL이라는 파일에 지침이 포함된 문서가 코드베이스와 함께 제공되는데, configure 스크립트가 실패할 경우 유용할 수 있다.
3. 생성
소프트웨어 개발자들은 GNU의 Autotools를 이용함으로써 크로스 플랫폼 소프트웨어 개발을 단순화한다. 이 스크립트들은 환경 설정, 플랫폼 아키텍처, 필요한 빌드 및 런타임 의존성의 존재 및 위치에 대한 정보를 조회한다. 수집된 정보는 설치 단계 가운데 `configure.ac`에 저장한다.
Autotools는 크로스 플랫폼 소프트웨어 개발의 몇 가지 어려움을 단순화한다. 이 도구는 환경 설정, 플랫폼 아키텍처, 필요한 빌드 및 런타임 종속성의 존재 및 위치에 대해 호스트 시스템을 쿼리한다. 수집된 정보는 설치 단계에서 `configure`에서 읽을 수 있도록 `configure.ac`에 저장한다.
새로운 개발에서 라이브러리 종속성 검사는 pkg-config를 통해 m4 매크로인 PKG_CHECK_MODULES를 통해 수행할 수 있다. pkg-config가 인기를 얻기 전에는 종속된 라이브러리의 배포에 포함된 것으로 알려진 파일을 찾기 위해 별도의 m4 매크로가 생성되었다.