간결한 버전: 설치를 통해 프로젝트 재컴파일을 시도합니다. 모든 파일을 올바른 위치에 넣고 싶습니다.
긴 버전: 원하는 프로젝트를 빌드하기 위해 Docker 컨테이너를 만들었습니다. 성공했습니다. 그 이유는 단지 ag(실버 검색기)를 빌드하기 위해 최종 Docker 컨테이너에 pcre-devel 등과 같은 모든 개발 종속성을 설치하고 싶지 않기 때문입니다.
따라서 프로세스는 다음과 같습니다. ./configure 및 make를 사용하여 소스 코드를 미리 굽습니다. 그런 다음 최종 컨테이너로 이동하여 make install을 실행합니다. 내가 이해한 바에 따르면 make install은 파일을 올바른 위치에 복사하기만 하면 됩니다. 하지만 프로젝트를 다시 컴파일하려고 합니다. 이미 make 문제를 발행했는데 왜 make install이 프로젝트를 다시 재구축하려고 합니까?
우리가 진행하고 있는 구체적인 프로젝트는 ag입니다.은을 찾는 사람
다음 오류가 발생합니다.
bash-4.2# ./ag --version
ag version 0.32.0
Features:
+jit +lzma -zlib
bash-4.2# make install
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /opt/sources/the_silver_searcher/missing autoheader)
rm -f src/stamp-h1
touch src/config.h.in
cd . && /bin/sh ./config.status src/config.h
config.status: creating src/config.h
config.status: src/config.h is unchanged
CC src/ignore.o
In file included from src/ignore.c:10:0:
src/options.h:7:18: fatal error: pcre.h: No such file or directory
#include <pcre.h>
^
compilation terminated.
make: *** [src/ignore.o] Error 1
bash-4.2#
물론 PCRE 종속성을 설치하고 싶지 않습니다. 하지만 이미 바이너리가 있으므로 문제가 되지 않습니다. 뭐가 문제 야?
답변1
일부 프로젝트의 경우 "설치" 단계가 매우 간단할 수 있습니다. 따라서 또 다른 접근 방식은 make -n install
모든 것이 컴파일되는 시스템에서 실행하는 것입니다 . 설치 및 인쇄에 필요한 사항을 평가합니다.하지만 실행되지는 않음주문하다. 상대적으로 짧은 경우 두 터미널 창 사이에서 잘라내어 붙여넣어 대상에서 수동으로 실행할 수 있습니다. Makefile에는 이를 패키지화하는 대상이 있을 수도 있습니다(이해하기 더 쉬울 수 있는 Makefile.in을 살펴보는 것이 좋을 수도 있지만).