İçeriğe atla

Make

GNU Make
Paradigmasımakro, deklaratif
İlk çıkışıNisan 1976 (48 yıl önce) (1976-04)
TasarımcıStuart Feldman
Önemli uygulamalarıBSD, GNU, nmake
LehçeleriBSD make, GNU make, Microsoft nmake
EtkiledikleriAnt, Rake, MSBuild
Uygulama diliC
İşletim sistemiUnix benzeri, Inferno
GNU Make Building Audacious'un ekran görüntüsü

Make dosyaları bir formdan diğerini çevirme işlemini otomatikleştiren bir araçtır. Bu işlemi, çevrilecek programların ihtiyaç duyacağı diğer programları kontrol ettikten sonra gerekli programları çalıştırarak çevirme işlemini gerçekleştirir. Çevrilen programı çalıştırmak için ihtiyaç duyulan diğer programlara bağımlılıklar denir. Unix/Linux tabanlı işletim sistemlerinde, kaynak kodu (source code) nesne koduna (object code) derlerken ve nesne kodlarını çalıştırılabilir (executable) ve kütüphane (library) dosyalarına bağlarken (linking) sıklıkla kullanılır. Bağımlılık grafiğini çıkarmak için "Makefile" ismi verilen bir dosya kullanır ve shell'e (kabuk) geçirilmek üzere kullanılan betikleri (script) oluşturur.

Make, değişen dosyaları algılar ve bağımlılık grafiğine göre hangi dosyaların derleneceğine karar verir, böylece minimal derleme yapılmış olur.

Otomatik yazılım inşasında karşılaşılan bir problem inşa işleminin farklı platformlarda uygulanmasıdır. Örneğin, bir platformda kullanılan derleyici başka platformdaki bir derleyiciyle aynı parametreleri kullanmıyor olabilir. Bu problemi yalnız Make kullanarak çözmek pratik değildir. Bu problemi çözmek için genellikle CMake ve Autoconf gibi araçlar kullanılarak platforma özel inşa komutları oluşturulur. Oluşturulan komutlar daha sonra Make tarafından işlenir.

Makefile Yapısı

Makefile bir grup dosyaya bağlı olarak, bir dosyayı ya da kural adını tanımlayan metin satırlarından oluşur. Çıktı dosyaları bağlı oldukları kaynak dosyalarına ve kaynak dosyalarda içinden dahil edildikleri dosyalara göre işaretlenirler. Her bir bağımlılık listelendikten sonra, tab ile boşluk bırakılmış satır dizileri girdi dosyalarının çıktı dosyalarına nasıl dönüştürüleceğini tanımlar (eğer girdi dosyaları çıktılardan daha önce değişikliğe uğramış ise). Bu tip tanımlamalara "build scripts" adı verilir ve hedef dosyayı oluşturması için shell'e geçirilir. Basit bir Makefile yapısı aşağıdaki gibidir.

Makefile çeşitli değişken tanımları içerebildiği gibi diğer Makefile' lardan alıntıda yapabilir. Makefile içerisindeki değişkenler komut satırından geçirilecek olan değerlerle değiştirilebilir. Bu kullanıcıya build script'ler için farklı davranışlar tanımlayabilmesini sağlar ve programları diğerleri arasından nasıl çağırabileceğini belirler. Örneğin, Makefile lardaki "CC" değişkeni sıklıkla C derleyicisine referans için kullanılır ve kullanıcı farklı bir derleyiciyi kullanmak maksadıyla tanımlayabilir.

Ayrıca bakınız

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Pascal (programlama dili)</span> yüksek seviyeli programlama dili

Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hâlâ yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

<span class="mw-page-title-main">Binutils</span> farklı nesne dosya formatlarının içerisindeki nesne kodlarının işlenmesi amacı ile kullanılan programlama araçlarının oluşturduğu bir paket

GNU Binutils farklı nesne dosya formatlarının içerisindeki nesne kodlarının işlenmesi amacı ile kullanılan programlama araçlarının oluşturduğu bir pakettir. Şu anda kullanılan güncel versiyonu Cygnus Solutions' daki programcılar tarafından BFD kütüphanesi kullanılarak yazılmıştır. Tipik kullanımı GCC, make ve GDB ile birlikte gerçekleştirilir.

<span class="mw-page-title-main">PiSi Paket Yöneticisi</span>

PiSi, 2011.2 sürümüne kadar Pardus'un güncel olarak da Pisi Linux ve Solus'un paket yöneticisidir. Bağımlılıkları takip ederek paket inşa etme, kurma, kaldırma, yükseltme ve benzeri işlevleri yerine getirir. Kullanıcı dostu bir grafiksel arayüz ve kapsamlı bir komut satırı arayüzü içerir. Geliştiriciler için tanıdık ve basit bir geliştirme ortamı sunar.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">Programlama</span> bilgisayar probleminin orijinal formülasyonundan çalıştırılabilir bilgisayar programlarına yönlendiren süreç

Programlama ya da diğer adı ile yazılımlama, bilgisayarın donanıma nasıl davranacağını anlatan, bilgisayara yön veren komutlar, kelimeler, aritmetik işlemlerdir. Diğer bir tanımla programlama, bilgisayar programlarının yazılması, test edilmesi ve bakımının yapılması sürecine verilen isimdir.

Yazmaçların yeniden adlandırılması, işlemcilerde, yürütülen buyruklardaki, aynı yazmaçların tekrar kullanımından doğan sahte bağımlılıkları gidermek için kullanılan bir yöntemdir.

<span class="mw-page-title-main">Apache Ant</span>

Apache Ant, yazılım inşası süreçlerini otomatikleştirmeye yarayan bir araçtır. Make'e benzeyen uygulama, Java ile geliştirilmiş olup Java platformunu gerektirmekte ve Java projelerinde sıkça kullanılmaktadır.

<span class="mw-page-title-main">Windows PowerShell</span>

PowerShell, Microsoft tarafından Windows komut satırı cmd.exe ve Windows Script Host'a alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır. Başlangıçta sadece Windows PowerShell olarak bilinen bir Windows bileşeni, 18 Ağustos 2016'da PowerShell Core'un tanıtımı ile açık kaynaklı ve çapraz platform haline getirildi.

Çok uzun buyruk kelimesi, buyruk düzeyindeki paralelliğin avantajından yararlanmak için geliştirilmiş bir işlemci tasarımıdır. Her buyruğu arka arkaya çalıştıran işlemciler, işlemci kaynaklarını verimsiz bir şekilde kullanabilmekte ve bu durum da başarımın düşmesine neden olmaktadır. Başarım, sıralı çalışan buyrukların çalıştırılma basamaklarında farklı aşamalarda olmasıyla veya aynı anda birden fazla buyruğun birbirinden bağımsız olarak çalıştırılmasıyla arttırılabilir. Bu yöntemlerin daha da iyileştirilmesi, buyrukların programdaki sırasından farklı bir sırada çalıştırılması ile sağlanabilir; bu yönteme de Sırasız yürütüm denir.

Java platformu dillerinden olan BeanShell, kendi sözdiziminin yanı sıra Java programlama dili sözdiziminin büyük bir bölümünü desteklemesi nedeniyle, Java programlama dilinin komut kabuğu olarak da görülebilir. BeanShell'in bu özelliği, küçük Java kod parçalarının denenmesinde ve Java platformu için yazılmış sınıf dosyalarının yüklenip, birim sınamalarının yapılmasında, düzenle-derle-çalıştır döngüsünü kısaltması sayesinde, büyük kolaylık sağlar.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

Çevre değişkenleri, çevresel değişkenler ya da ortam değişkenleri, işletim sistemi seviyesinde konfigüre edilebilen ve bilgisayar işlemleri tarafından erişilebilen değişkenlerdir. Çoğu kez belli programların ve dosyaların konumlarını ve birden fazla işlem tarafından kullanılabilen bilgi ve ayarları tutmak için kullanılırlar. Çoğunlukla bir karakter dizisi olurlar.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Ayrıştırıcı (yazılım)</span>

Ayrıştırıcı, girdi verilerini alır ve girdinin yapısal bir temsilini vererek, süreçte doğru sözdizimini kontrol eden bir veri yapısı oluşturan bir yazılım bileşenidir. Ayrıştırma öncesinde veya sonrasında başka adımlar izlenebilir veya bunlar tek bir adımda birleştirilebilir. Ayrıştırıcı, genelde girilen karakter dizisinden belirteçler oluşturan ayrı bir sözcük tabanlı analiz motorunu takip eder. Ayrıştırıcılar elle programlanabilir veya bir ayrıştırıcı üreteci tarafından otomatik olarak veya yarı otomatik olarak oluşturulabilir. Ayrıştırma, biçimlendirilmiş çıktı üretimlerini tek bir şablonda tamamlama görevi görür. Bunlar, farklı etki alanlarına uygulanabilir, ancak bir derleyicinin girdi ve çıktı aşamaları gibi genellikle bir arada sunulur.

CMake, derleyiciden bağımsız olarak, yazılım inşası otomasyonu, testi, paketleme ve yüklenmesi için kullanılan çapraz-platform ve açık kaynak kodlu yazılımdır. Çoklu kütüphane kullanan uygulamaları ve dizin hiyerarşisini destekler. CMake bir inşa yazılımı değildir, kodu build etmez, onun yerine yerli inşa sistemlerinin ihtiyacı olan şeyi, inşa betiklerini oluşturur. Apple Xcode, Make, Microsoft Visual Studio, Ninja gibi yerli (native) inşa ortamlarıyla birlikte kullanılır. Kullanılması için yalnızca bir C++ derleyicisi yeterlidir.

<span class="mw-page-title-main">Metin tabanlı kullanıcı arayüzü</span> bir metin ekranına çıktı vermeye veya onu kontrol etmeye dayalı arabirim türü

Metin tabanlı kullanıcı arayüzü, metinsel kullanıcı arayüzü veya terminal kullanıcı arabirimi olarak da adlandırılır, grafik kullanıcı arayüzlerinin (GUI) icadından bir süre sonra ortaya çıkan ve onu grafik kullanıcı arayüzünden ayırt etmek için türetilen yeni bir terimdir. TUI'de bilgisayar grafikleri metin kipinde görüntülenir. Gelişmiş bir TUI, GUI'ler gibi tüm ekran alanını kullanabilir ve fare ve diğer girişleri kabul edebilir.