make clean ile makeclean yapmak arasındaki fark


25

Bu sayfadaki yardımı ile ffmpeg'i kaynaklardan yükledim. https://trac.ffmpeg.org/wiki/CentosCompilationGuide

Bu öğretici aramaların çoğu fark make distcleansonra make install. Ancak kurulumdan make cleansonra sadece libvpx çağırır .

Bu belgeyi göre, http://www.gnu.org/software/automake/manual/automake.html#Clean make clean tüm dosyaları siler makeoluşturulur ve make distcleantüm dosyaları deltes ./configureyarattı.

temizletmek

Oluşturma ağacından, oluşturduğu tüm dosyaları oluşturarak silin.

kirli yapmak

Ek olarak bir şey silin.

Bunun bir make distcleansonraki kurulum için çağrıldığını anlıyorum ancak make cleankurulumdan sonra neden çağrıldığını anlayamadım .

Yüklenen ffmpeg sorunsuz çalışır. Ben de bu soruyu sordum çünkü sadece Linux ile ilgili bilgimi geliştirmek istiyorum. Birinin bana bunun için bir açıklama yapması çok yardımcı olacaktır.


2
Temizleme işlemi, kurulumdan sonra temizlemek için çağrılır. Derlenmiş sürümleri, hem kaynağınız varsa (ve böylece yeniden oluşturabilirsin) hem de yüklü programın bulunduğu dizinde tutmaya gerek yoktur.
Hennes

Yanıtlar:


27

Sonrasında kullanılan parametre make, yalnızca yazan geliştiricilere bağlıdır Makefile. Daha sonra başvuruda bulunacağınız belgeler olan Autotools, oluşturmanın birçok yolundan sadece biridir Makefile.

Tipik standart, make cleantüm ara dosyaları kaldırır ve make distcleanağacı, herhangi bir configure betiği çıktısını kaldırmak da dahil olmak üzere, tam olarak tartar edilmediği (veya oldukça yakın bir şey) olduğu gibi yapar. Örneğin Linux çekirdeği bu şekilde çalışır.

Başka bir deyişle, bu kütüphanelerin her biri için geliştiricilere tamamen bağımlıdır ve bu yüzden bazen cleankendisinin ve diğer zamanlarda distclean. Bu arada, çalıştırmanıza gerek yok clean/ distclean- Sanırım sadece disk alanından tasarruf etmek için çalıştırdınız. make installgenellikle dosyaları hedef dizine kopyalar (yine geliştiricilere bağlı olarak) - tipik olarak /usr/libveya gibi yerler /usr/bin(ayrıca bir Autotools build sistemi ise, configure betiği tarafından da belirlenir)

Bu nüanslar, insanların RPM veya Debian paketleri gibi paket yönetim sistemlerini kullanmasının temel nedenidir.


İnsanların ikili paketleri kullanmasının temel nedeni nedir? Peki ya zaman kazanmak?
x-yuri,

6

Anladığım kadarıyla sadece güvenli disk alanı. Bazı programları derledikten sonra, bir çok dosyaya sahip olacaksınız, örneğin artık ihtiyaç duyulmayan nesne dosyaları, çünkü bunlar ikili dosyalarda birbirine bağlı. Hepsi bir miktar CPU zamanı harcayarak yeniden yaratılabilir.

Bu örneği şu anki ffmpegkodla ele alalım :

  • gitRepo klonladıktan sonra kaynak 53 160 kB alır.
  • configure çalışmasından sonra 53 632 kB
  • derlemeden sonra başlangıç ​​değerinin 10 katından daha fazlasına sahibiz: 673 668 kB
  • make clean bunu 53 636 kB'ye düşürdü
  • ve nihayet make distcleanklonlamadan hemen sonra seviyedeyiz: 53 188 kB

2

Neden libvpx adımı kullanır make cleanyerinemake distclean

Kılavuz libvpx yazma zaman onun hiçbir kural vardı Makefilehedef için distcleanyani cleanyerine kullanılmıştır.

Neden make (dist)cleansonra dahilmake install

make distclean/ make cleanHer sonrasında dahildir make installbasitçe (beklenen daha sık meydana) geri gitmek kullanıcılar, değişim yapılandırma seçeneklerinin ve yeniden derlemek için bir "temiz bir sayfa" sağlamak için bir tedbir olarak.

Derleme kılavuzunun önceki bir sürümünde, önleyici olmadan, make distcleanbu kullanıcılardan biri zaman zaman beklenmeyen sonuçlarla karşılaşır.

Ya make distclean/ make cleanbir hata verirse?

Bunun gibi:

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

veya bu:

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

Boşver. Bu, muhtemelen make distcleaniki kez koştuğunuz anlamına gelir ki bu zararsızdır.


Rehberin şimdi make distcleanlibvpx için kullandığına dikkat çekiyor .
Hashim,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.