Czym dokładnie jest plik makefile i jak możemy go utworzyć?

8

Wiem, że to głupie pytanie, ale ponieważ tak bardzo staram się nauczyć linux samodzielnie, potrzebuję pomocy od was.

Znalazłem to zadanie w Internecie i próbuję je rozwiązać, ale nie rozumiem dokładnie, jak mogę używać plików makefile w systemie Linux i jak je tworzyć.

Załóżmy, że mój drukowany katalog roboczy to /home/george/Documents

Chcę utworzyć plik makefile, który wykonuje następujące czynności:

  1. Wyświetla komunikat w następujący sposób „witaj, dziś jest Sun”. Słońce przychodzi od niedzieli. Więc muszę użyć datepolecenia w tym pliku make, aby wyświetlić tylko pierwsze trzy litery.
  2. kompresować /etc/hostsw /tmpużyciu gzip(prawdopodobnie tutaj powinno być coś takiego

    gzip -c SOURCE DESTINATION # ?? 
    

Twoje zdrowie

Adrian George
źródło
Pliki makefile służą do selektywnego budowania nieaktualnych plików obiektowych z plików źródłowych w ramach działań związanych z programowaniem. Nie ma to nic wspólnego z tym, co byś zrobił.
enzotib

Odpowiedzi:

8

aby odpowiedzieć na twoje pytanie, nie mogę dać ci odpowiedzi w jednym wierszu / akapicie, ponieważ dotyczy on wszystkich rzeczy. Przeczytaj pierwszy link, który zawiera wszystko, czego potrzebujesz wraz z przykładami.

Dobry samouczek, który może wyjaśnić wszystko o marce

rɑːdʒɑ
źródło
3
pierwszy link powinien być: mrbook.org/blog/tutorials/make
Shahryar Saljoughi
Samouczek mrbook.org/blog/tutorials/make używa przestarzałego kodu c ++ i nie jest już kompilowany. Zobacz to pytanie, aby zrozumieć i naprawić.
David
Linki nie żyją.
ComputerScientist
2

Makefile jest używany jako „mapa” do kompilacji programów w C. Pracują z makenarzędziem, opisują, jak program musi zostać skompilowany / powiązany, aby działał poprawnie po przekształceniu w plik wykonywalny. Do globalnych zadań UNIX / shell szukasz skryptów powłoki, a nie makefile :)

Zobacz http://en.wikipedia.org/wiki/Make_(software)#Makefiles, aby uzyskać więcej informacji na temat makefiles, oraz http://en.wikipedia.org/wiki/Shell_script, aby odkryć skrypty powłoki.

Podstawowym skryptem powłoki dla tego, co próbujesz zrobić, może być:

#!/bin/bash
echo "Hello world, today is $(date +%a)"
gzip -c SOURCE DESTINATION

Zapisać to w pliku i wykonać go za pomocą shell prompt ( bash myscript.sh, sh myscript.sh...). Możesz także ustawić skrypt jako wykonywalny, używając:

chmod +x myscript.sh

A następnie uruchom go za pomocą domyślnego interpretatora za pomocą:

./myscript.sh
John WH Smith
źródło
1
Próbuję utworzyć plik makefile, który nie robi tego ze skryptem powłoki.
Adrian George
Następnie musisz opracować program C, który to robi, i skompilować go za pomocą Makefile, jeśli chcesz. Pliki makefile nie wykonują zadań Linuksa, kierują kompilacją programów w C, to zupełnie inna sprawa.
John WH Smith,
1
@JohnWHSmith Nie ma nic specjalnego w kompilowaniu programów w C. Pliki makefile mogą być używane do wykonywania różnych zadań. (To powiedziawszy, wiele zadań jest słabo przystosowanych do korzystania z
plików
0

Dlaczego nie utworzyć skryptu powłoki, a następnie utworzyć dowiązanie symboliczne wskazujące utworzony skrypt powłoki? Umieść dowiązanie symboliczne w katalogu, który znajduje się w ŚCIEŻCE, abyś mógł „uruchomić” dowiązanie symboliczne bez względu na katalog, w którym się znajdujesz.

użytkownik544202
źródło