소스 코드 컴파일
100%

패키지 · 레슨 7

소스 코드 컴파일

소스에서 컴파일한 소프트웨어를 검증, 설정, 빌드, 테스트, 스테이징 및 추적하는 방법을 알아봅니다.

소스에서 빌드하면 설정된 저장소에 없는 버전이나 기능을 사용할 수 있지만, 통합, 업데이트 및 신뢰 관리 책임이 배포판에서 사용자에게 넘어옵니다. 요구 사항을 충족하는 지원 배포판 패키지가 있다면 그것을 우선 사용하십시오.

빌드 전에 검증하고 읽기

인증된 업스트림 릴리스 경로에서 소스를 구하십시오. 신뢰할 수 있는 경로를 통해 서명 또는 체크섬을 검증하고, 아카이브를 검사한 뒤 비특권 스테이징 디렉터리에 추출하십시오. README, INSTALL, SECURITY 및 프로젝트 빌드 문서 같은 파일을 읽으십시오.

빌드 지침은 실행 가능한 코드입니다. configure 스크립트, 빌드 정의, 테스트 또는 컴파일러 플러그인은 사용자 권한으로 임의 명령을 실행할 수 있습니다. 신뢰할 수 없는 소스는 빌드하지 말고, 빌드 자체를 sudo로 실행하지 마십시오.

일반적으로 sudo 없이 컴파일 단계를 실행해야 하는 이유는 무엇입니까?

빌드 요구 사항 설치하기

데비안 계열 개발 시스템에서는 다음 명령을 흔히 시작점으로 사용합니다.

$ sudo apt install build-essential

이 명령은 기본적인 컴파일러와 빌드 도구를 설치하지만 모든 프로젝트에 필요한 모든 의존성을 제공하지는 않습니다. 프로젝트에는 언어 런타임, 생성기, 빌드 시스템 도구, 개발 헤더 또는 정확한 라이브러리 버전이 추가로 필요할 수 있습니다. 신뢰할 수 있는 저장소에서 요구 사항을 설치하고 빌드 의존성과 런타임 의존성을 구분하십시오.

데비안 계열 시스템에서 build-essential이 제공하는 것은 무엇입니까?

설정 및 빌드

전통적인 Autoconf 방식 프로젝트에서는 다음 명령을 사용합니다.

$ ./configure --prefix=/usr/local
$ make

configure는 환경을 확인하고 선택한 옵션에 따라 빌드 파일을 생성합니다. make는 일반적으로 Makefile에 있는 의존성과 명령 규칙을 읽고 요청된 대상을 만듭니다.

이 순서가 모든 프로젝트에 적용되는 것은 아닙니다. 프로젝트는 CMake, Meson, Ninja, 언어별 도구 또는 사용자 정의 스크립트를 사용할 수 있습니다. 익숙하다는 이유만으로 ./configure를 실행하지 말고 정확한 릴리스의 문서를 따르십시오. 빌드 시스템이 지원한다면 트리 외부 빌드 디렉터리를 사용해 생성 파일을 분리할 수 있습니다.

전통적인 작업 흐름에서 make는 무엇을 합니까?

설치 전에 테스트하기

다음과 같이 프로젝트 문서에 지정된 테스트 대상을 실행합니다.

$ make check

실제 대상은 test, check 또는 별도의 명령일 수 있습니다. 테스트하지 않은 결과물을 설치하지 말고 실패 원인을 조사하십시오. 테스트에는 네트워크 접근, 서비스, 특수 하드웨어 또는 격리가 필요할 수 있습니다. 다른 빌드 코드와 마찬가지로 실행 전에 내용을 검토하십시오.

문서에 명시된 테스트 모음이 실패하면 어떻게 해야 합니까?

설치 스테이징 및 추적

sudo make install은 네이티브 패키지 데이터베이스에 기록하지 않고 파일을 시스템 접두사에 직접 복사할 수 있습니다. 제거 대상은 선택 사항이며 불완전할 수 있고, 나중의 업그레이드가 파일을 덮어쓰거나 고아 파일로 남길 수도 있습니다.

다음과 같은 제어 가능한 방법을 우선 사용하십시오.

  • 배포판 패키징 도구로 공식 네이티브 패키지 빌드
  • 정책이 허용한다면 /usr/local처럼 명확히 분리된 접두사에 설치
  • DESTDIR 같은 지원 메커니즘으로 임시 패키징 루트에 파일 스테이징
  • 적절한 경우 비특권 사용자 접두사, 격리 환경 또는 컨테이너 사용

checkinstall은 일부 make install 작업 흐름에서 단순 패키지를 만들 수 있지만 범용 도구가 아니며, 검토된 배포판 수준의 패키지 제작법을 대신하지도 않습니다. 이를 “항상” 적용하는 규칙으로 취급하지 마십시오. 권한 있는 복사를 수행하기 전에 스테이징된 파일 목록, 소유권, 권한, 경로 및 제거 또는 업그레이드 계획을 검사하십시오.

지원되는 DESTDIR 스테이징 설치의 목적은 무엇입니까?

레슨 완료

소스 코드 컴파일 완료

이제 소스 빌드를 제어 가능한 소프트웨어 공급 작업 흐름으로 다룰 수 있습니다.

  • 소스를 인증하고 그 지침을 실행 가능한 코드로 간주해 검토합니다.

  • 신뢰하는 저장소에서 명시된 빌드 요구 사항을 설치합니다.

  • 불필요한 권한 없이 설정, 빌드 및 테스트합니다.

  • 시스템에 설치하기 전에 결과물을 스테이징하고 검사합니다.

  • 네이티브 패키징 또는 의도적으로 격리한 접두사로 설치 파일을 추적합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
패키지(으)로 돌아가기