Makefile nedir ve Linux içinde nasıl çalışır?

Makefile nedir ve Linux içinde nasıl çalışır?

Si belirli dosyalar güncellendiğinde bir görevi çalıştırmak veya güncellemek istiyorummake yardımcı programı kullanışlı olabilir. Make yardımcı programı yürütülecek bir dizi görevi tanımlayan bir dosya, makefile gerektirir.

Bir programı kaynak koddan derlemek için make'i kullanmış olabileceğinizden, bu isim çoğunuza tanıdık gelecektir. Çoğu açık kaynak projesi, make install kullanılarak kurulabilen son bir yürütülebilir ikili dosyayı derlemek için make kullanır.

bu sefer bu tür dosyaların Linux içinde nasıl çalıştığını anlayalım.

Makefile dosyası Temel olarak dört temel ifade türüne ayrılır:

  • Yorumlar
  • Değişkenler.
  • Açık kurallar.
  • Örtük kurallar.

Açık Kurallar, hangi dosyaların diğer dosyalara bağlı olduğunu ve belirli bir dosyayı derlemek için gereken komutları belirtir.

Örtük olanlar açık olanlara benzer, ancak farkla çalıştırılacak komutları belirtirler, ancak bunun yerine make hangi komutların çalıştırılacağını belirlemek için dosya uzantılarını kullanır.

Bu örnekte bu son ikisini kullanmayacağız, Sadece terminalde klasik "Merhaba Dünya" yı yazdırarak başlayacağız.

Bunun için istediğiniz isimle boş bir dizin oluşturacağız.

Bu durumda buna "örnek yapma" diyelim ve bunun içinde aşağıdaki içeriğe sahip bir makefile oluşturacağız:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Şimdi dizinin içine make yazarak dosyayı çalıştırın, çıktı şöyle olacaktır:

make
echo "Hola Mundo"
Hola Mundo

Makefile çalıştırıldığında görebileceğiniz gibi, echo "Merhaba Dünya" komutu ve ardından gerçek komutun çıktısı görüntülenir. Genellikle bunu istemiyoruz. Make komutunu çalıştırdığınızda bu çıktıyı bastırmak için, echo'dan önce bir "@" eklemeniz yeterlidir:

Bunun pratik örneği:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Şimdi makefile'ı tekrar çalıştırmaya devam edebiliriz. Çıktı sadece şunu göstermelidir:

make
Hola Mundo

Bu oldukça basit. Ama bildiğiniz gibi, makefile'lar pek çok şey içerir ve bunların izlenecek dizilerini gösterirler.

Bu dosyaya bazı basit diziler ekleyebiliriz.

Ne yapacağımız dosyayı aşağıdaki gibi düzenlemek:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Makefile'ı yeniden çalıştırırken, bu sadece ilk amacı gerçekleştirecektir. Bunun nedeni, makefile'daki yalnızca ilk hedefin varsayılan hedef olmasıdır.

Sırayla koşmak için dosya içinde "tümü" ile belirtilmesi gerekir. Diğer hedefleri çağırmak "oranın" sorumluluğundadır.

all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Make'i tekrar yürütmeye devam edebilirsiniz ve dizinin içinde adlı bir dosyanın olduğunu göreceksiniz. "Dosya.txt".

Aynı şekilde makefile dosyası içinde bir hedefi yürütmek mümkündür, bu genellikle yaygın olarak kullanılmaktadır.

Dosyamızı değiştireceğiz ve sonuna aşağıdakileri ekleyeceğiz:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Make'i yeniden çalıştırabilirsiniz ve txt dosyasını yeniden oluşturacaktır. Göreceğiniz gibi, önceki ile aynı şeyi yapacak. Ama şimdi makefile dosyasının içindeki hedefi çalıştıracağız.

Bunu şununla yapıyoruz:

make clean

Bununla, dosya oluşturma hakkında oldukça basit bir şey öğrenebilir ve bazı şeyleri otomatikleştirmek istiyorsak bunların nasıl oldukça yararlı olabileceğini öğrenebiliriz.

Açıkçası daha büyük ve daha karmaşık bir dosya oluşturabilirsiniz, ancak bu, bunun nasıl çalıştığını öğrenen yeni başlayanlar (kendimi dahil ediyorum) için yalnızca bir örnektir.


6 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Arg0'lar dijo

    Çok ilginç makale. Bir soru ... "değişkenler" dediğiniz şey, işlevler veya yöntemler olmayacak mı?

    1.    David naranjo dijo

      Aslında, evet dostum, düzeltme için teşekkürler.
      Şerefe! 🙂

  2.   Pedro dijo

    Mükemmel, umarım kazmaya devam edersin.

  3.   Manuel ALcocer dijo

    Ne bir şey ne de diğeri https://www.gnu.org/software/make/manual/make.html, "hedefler"

  4.   Manuel ALcocer dijo

    kurallar

  5.   Sebas dijo

    Umarım, bu "avantajlar ve işlemlerin" nasıl duyurulduğu gibi hiç kimsenin aynı tutkuyla açıklayamadığı, Linux'un günlük çalıştırılmasına ilişkin "her yerde ve temel" gibi şeyleri açıklamaya devam ederler.