Linux에서 일반적인 ./configure는 무엇을합니까?
모든 것이 makefile에 지정되어 있는데 왜 필요합니까?
일반적으로 실행시 구성 스크립트는 다음을 수행합니다.
소프트웨어를 설치할 컴퓨터에 대한 세부 정보를 확인하십시오. 이 스크립트는 시스템에 대한 많은 종속성을 확인합니다. 특정 소프트웨어가 제대로 작동하려면 이미 컴퓨터에 많은 항목이 있어야 할 수 있습니다. 시스템에 주요 요구 사항이 누락 된 경우 구성 스크립트는
exit
필요한 사항을 얻을 때까지 설치를 진행할 수 없습니다.Makefile
다음 단계에서 사용할을 만듭니다 .
일반적으로 makefile과 "configure.h"를 생성하는 스크립트를 실행합니다.
스크립트는 매크로 언어 인 "m4"언어로 작성됩니다. 최상위 레벨 매크로는 autoconf.ac 또는 (이전 시스템의 경우) autoconf.in에서 찾을 수 있습니다. 이러한 확장에는 하위 수준의 매크로가 포함되어 있으며,이를 통해 실제 테스트로 확장되어 어떤 종류의 시스템이 있는지 확인하는 작은 프로그램이나 작업을 만듭니다.
예를 들어 AC_CHECK_HEADER ([myheader.h], ...)는 다음과 같은 작은 C 프로그램을 생성 할 수 있습니다.
#include "myheader.h"
int main(int argc, char** argv) {
return 0;
}
프로그램이 컴파일되면 검사는 "통과"로 간주되고 그렇지 않으면 "실패"합니다. 이러한 검사의 상태는 종종 config.h 파일에 반영됩니다. 검사를 통과하면 config.h에서 다음과 같은 줄을 찾을 수 있습니다.
#define HAVE_MYHEADER_H 1
실패한 테스트에서는 다음과 같이 보일 수 있습니다.
#define HAVE_MYHEADER_H 0
AM_INIT_AUTOMAKE 매크로에서 autoconf와 함께 작동하도록 구성된 경우 Makefile은 테스트 결과를 포함하는 변수를 내 보내면 테스트 결과를 참조 할 수도 있습니다. 따라서 필요한 라이브러리가 몇 가지 다른 일반적인 위치에 있거나 표준 도구 (예 : tar, ar 등)와 "작동하는"구문이 다르거 나 선호하는 도구를 사용할 수없는 경우 Makefile은 다른 라이브러리 위치, 다른 도구 구문 또는 다른 도구 세트를 사용하여 프로젝트를 올바르게 빌드 할 수 있습니다.
따라서 Autotools 프로젝트 (configure / make / make install)를 처리 할 때 Makefile에는 실제로 프로젝트를 빌드하는 데 필요한 모든 것이 포함되어 있지 않으며 "configure"를 입력 할 때 시스템과 일치하도록 Makefile.in 템플릿에서 생성됩니다.
구성 스크립트는 코드를 설치할 위치와 프로그램을 빌드하는 데 사용되는 (C, C ++, Fortran, ...) 컴파일러에 필요한 정의를 대체하여 템플릿에서 Makefile을 빌드합니다. 이론적으로는 한 단계로 모든 작업을 수행 할 수 있습니다. 단, 단계적으로 수행하기 더 쉬운 다양한 구성이 있다는 점만 제외하면됩니다. (예를 들어, 멀티 코어 머신을 사용할 수있는 대규모 프로그램을 빌드하는 경우 특정 수의 병렬 컴파일이 발생하도록 지정할 수 있습니다. 이는 구성 방법에 대한 문제가 아닙니다.)
참고 URL : https://stackoverflow.com/questions/2529566/what-does-a-typical-configure-do-in-linux
'IT Share you' 카테고리의 다른 글
Makefile에서? =는 무엇입니까? (0) | 2020.11.24 |
---|---|
Javascript를 사용하여 HTML을 작성하는 올바른 방법은 무엇입니까? (0) | 2020.11.24 |
XDocument에서 XML을 문자열로 얻는 방법은 무엇입니까? (0) | 2020.11.24 |
JUnit 테스트 개인 변수? (0) | 2020.11.24 |
Python에서 목록이어야하는 매개 변수의 기본값을 설정하는 모범 사례? (0) | 2020.11.24 |