Jaka jest różnica między różnymi poleceniami „make”?

-1

Tak więc po uruchomieniu configurepliku na kodach źródłowych dla różnych aplikacji należy wejść makei make installzainstalować aplikację. Moje pytanie brzmi, jaka jest różnica między makei make install?

Naji
źródło

Odpowiedzi:

2

makeszuka pierwszego celu w Makefile. (GNU Make pozwala to skonfigurować).

make installszuka celu o nazwie dokładnie „ install”.

grawitacja
źródło
dlaczego więc trzeba uruchomić oba ?!
Naji
A potem podczas procesu komendy „make” żadne pliki nie są kopiowane, prawda?
Naji
1
@Naji Ponieważ niektórzy twórcy oprogramowania wolą to w ten sposób - jeden cel kompiluje, a drugi przenosi pliki do miejsca docelowego w systemie plików („zainstaluj”). Nic nie mówi, że musisz uruchomić oba, ani że wszystko, co używa, make musi mieć installcel. Nie ma absolutnie żadnych reguł poza tym, co jest zdefiniowane w każdym konkretnym Makefile, choć istnieją ogólne wytyczne, których przestrzega wielu programistów. Zazwyczaj wytyczne są specyficzne dla małych grup - istnieje nieskończona liczba sposobów robienia rzeczy, z których wiele jest równie ważnych.
Bob
@Bob Wytyczną, że „budowanie i instalowanie powinny być oddzielne” jest jednak zdecydowana większość.
grawity
@ Bob, więc gdzie są kompilowane pliki?
Naji
1

Dokonaj instalacji jest jednym z wielu możliwych celów w pliku Makefile. Jako prosty przykład drugi bardzo powszechny jest czysty: make clean, ogólnie rzecz biorąc, czyści pliki tymczasowe, które są niezbędnymi / użytecznymi produktami ubocznymi procesu kompilacji, ale które nie są już potrzebne po utworzeniu końcowego pliku wykonywalnego.

Wykonaj instalację zawiera instrukcje, aby wstawić skompilowany produkt do systemu, na przykład uruchamiając niezbędne polecenie depmod, które zajmuje się instalacją modułu.

dlaczego więc trzeba uruchomić oba ?!

Ponieważ pierwszy może być wykonywany jako zwykły użytkownik, drugi często wymaga uprawnień systemowych.

Jeśli twoje następne pytanie brzmi: dlaczego nie uruchomić obu jako sudo, odpowiedź brzmi: nie wszystkie instalacje będą używane w całym systemie. Na przykład, jeśli nie masz uprawnień roota w systemie, do którego masz dostęp, możesz skompilować i zainstalować dany pakiet do własnego wyłącznego użytku. W takim przypadku chcesz móc go skompilować i przekazać do konsolidatora, ale nie możesz go zainstalować do użytku przez wszystkich użytkowników systemu. W takim przypadku przyczyna różnicy jest oczywista.

Innymi słowy, każdy etap procesu instalacji jest zorganizowany w taki sposób, aby można go było wykonywać przy możliwie najniższych uprawnieniach, co pozwala zarówno na instalację systemową, jak i lokalną, o ile ma to sens.

MariusMatutiae
źródło