`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 clean는 make 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.