`make clean`과`make distclean`의 차이점


25

이 페이지의 도움으로 소스에서 ffmpeg를 설치했습니다. https://trac.ffmpeg.org/wiki/CentosCompilationGuide

이 튜토리얼의 대부분은 make distclean이후에 호출 make install됩니다. 그러나 make clean설치 후 libvpx 호출 만 있습니다.

이 문서에 따르면, http://www.gnu.org/software/automake/manual/automake.html#Clean는 make clean 모든 파일 삭제 make생성을하고 make distclean있음을 모든 파일을 deltes ./configure만들었습니다.

깨끗하게하다

빌드 트리에서 모두 생성 한 파일을 지 웁니다.

깨끗하지 않다

또한 ./configure 생성을 삭제하십시오.

make distclean다음 설치가 필요 하다는 것을 이해 하지만 make clean설치 후 왜 호출 되는지 이해할 수 없습니다 .

설치된 ffmpeg는 문제없이 작동합니다. 그래서 나는 리눅스에 대한 지식을 향상시키고 싶기 때문에이 질문을했습니다. 누군가 나에게 설명을 해주면 매우 도움이 될 것입니다.


2
설치 후 정리를 호출하여 정리하십시오. 여전히 소스 (따라서 소스를 다시 만들 수 있음)와 설치된 프로그램이 모두 있으면 컴파일 된 디렉토리에 컴파일 된 버전을 유지할 필요가 없습니다.
Hennes

답변:


27

이후 make에 사용 된 매개 변수 는을 작성한 개발자에 따라 다릅니다 Makefile. 나중에 참조하는 Autotools 문서는 여러 가지 방법 중 하나입니다 Makefile.

일반적인 표준은 make clean모든 중간 파일을 제거 make distclean하고 트리에서 구성 스크립트 출력 제거를 포함하여 압축을 풀었을 때와 같은 방식으로 트리를 만듭니다. 이것은 리눅스 커널이 작동하는 방식입니다.

즉, 각 라이브러리의 개발자에게 전적으로 의존하기 때문에 때로는 그 clean시간과 다른 시간 distclean입니다. 그건 그렇고, 당신은 실행할 필요가 없습니다 clean/ distclean-디스크 공간을 절약하기 위해 실행해야한다고 생각합니다. make install일반적으로 파일을 대상 디렉토리에 복사합니다 (다시 개발자에 따라 다름). 일반적으로 /usr/lib또는 유사한 위치 /usr/bin( 또는 구성 스크립트 (Autotools 빌드 시스템 인 경우)에 의해 결정됨)

이러한 뉘앙스는 사람들이 RPM 또는 데비안 패키지와 같은 패키지 관리 시스템을 사용하는 주된 이유입니다.


사람들이 바이너리 패키지를 사용하는 주된 이유는 무엇입니까? 시간을 절약하는 것은 어떻습니까?
x-yuri

6

내 이해로는 디스크 공간을 안전하게 보호하는 것입니다. 일부 프로그램을 컴파일 한 후에는 바이너리로 서로 연결되어 있기 때문에 더 이상 필요하지 않은 객체 파일과 같은 많은 파일이 생깁니다. CPU 시간을 다시 소비하여 모두 다시 만들 수 있습니다.

현재 ffmpeg코드 와 함께이 예제를 보자 :

  • git리포지토리 복제 후 소스는 53160 kB 걸립니다.
  • 구성 실행 후 53632 kB입니다.
  • 컴파일 후 초기 값의 10 배 이상 : 673 668 kB
  • make clean 이것을 53636 kB로 줄입니다.
  • 마지막으로 make distclean복제 직후 수준에 거의 도달 한 후 : 53 188 kB

2

왜 libvpx 단계가 make clean대신에 사용됩니까?make distclean

안내서를 작성할 당시 libvpx에는 Makefile대상에 대한 규칙이 없었 distclean으므로 clean대신 사용되었습니다.

make (dist)clean이후에 포함되는 이유make install

make distclean/ make cleanmake install다시 돌아가서 구성 옵션을 변경하고 다시 컴파일 (예상보다 자주 발생)하는 사용자에게 "깨끗한 슬레이트"를 제공하기위한 예방 조치로 포함 됩니다.

이전 버전의 컴파일 안내서에서 예방 기능이 없으면 make distclean이러한 사용자 중 하나가 예기치 않은 결과를 겪을 수 있습니다.

어떤 경우 make distclean/이 make clean오류를 준다?

이처럼 :

Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'.  Stop.

아니면 이거:

make: *** No rule to make target 'distclean'.  Stop.

무시해. 그것은 당신이 make distclean두 번 달렸을 가능성이 있다는 것을 의미합니다 .


안내서가 이제 make distcleanlibvpx에 사용한다는 점에 주목할 가치가 있습니다.
Hashim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.