close

GNU Derleyici Koleksiyonu

Navigasyona git Aramaya git
GNU Derleyici Koleksiyonu
GNU araç zincirinin bir parçası
GNU Derleyici Koleksiyonu logo.svg
Gcc-4.2.0.png
GCC, Debian'daki komut satırından çağrılır
Genel bilgi
program türü Derleyici
geliştirici GNU Projesi
Geliştirme modeli Ücretsiz yazılım
İlk sürüm 23 Mayıs 1987 [ 1 ]
Lisans GPLv3
Teknik Bilgiler
Zamanlanmış C , C++
Desteklenen Platformlar çoklu platform
Sürümler
En son kararlı sürüm 11.1.0 ( bilgi ) (27 Nisan 2021 (1 yıl, 5 ay ve 19 gün))
Testlerdeki son sürüm 0.922 Mart 1987
Bağlantılar

GNU Derleyici Koleksiyonu , GNU projesi tarafından oluşturulan bir derleyiciler kümesidir . GCC özgür bir yazılımdır ve Özgür Yazılım Vakfı ( FSF ) tarafından GPL genel kamu lisansı altında dağıtılır .

Bu derleyiciler, UNIX'ten türetilen , açık kaynak ve ayrıca Mac OS X gibi tescilli işletim sistemleri için standart olarak kabul edilir. GCC, nesne dosyalarının tanımlanması veya kopyalanması, çevrilmesi veya listelenmesi, bağlanması veya bunlardan gereksiz sembollerin kaldırılması için boyutlarını alma gibi görevleri gerçekleştirmek için binutils olarak bilinen uygulamalar paketini gerektirir .

GCC , yalnızca C dilini derlediği için başlangıçta GNU C Derleyicisi anlamına geliyordu . Daha sonra C++ , Fortran , Ada ve diğerlerini derlemek için genişletildi.

Amaç

GCC, GNU projesinin bir parçasıdır ve GNU/Linux varyantı da dahil olmak üzere tüm GNU sistemlerinde kullanılan derleyiciyi geliştirmeyi amaçlar . GCC geliştirme, birçok geliştirme ekibini çekebilecek ve GCC ve GNU sistemlerinin farklı mimarilerde ve farklı ortamlarda çalışmasını sağlamak için küresel sınıf bir derleyici-iyileştirici kullanımını teşvik etmek için açık bir geliştirme ortamı kullanır ve birçok platformu destekler. dahası, GCC'nin özelliklerini genişletmek ve geliştirmek.

Tarih

Richard Stallman GCC'yi 1985'te yazmaya başladı. Önceden var olan bir C derleyicisini genişleterek öğeler ekledi.Derleyici orijinal olarak Pascal'ın genişletilmiş, taşınabilir olmayan bir lehçesi olan Pastel'i derledi ve Pastel'in kendisinde yazılmıştı. Len Tower ve Stallman [ 2 ] tarafından C'de yeniden yazıldı ve 1987'de [ 3 ] GNU Projesi derleyicisi olarak yayınlandı ve özgür bir yazılım derleyicisine sahip oldu . Gelişimi, Özgür Yazılım Vakfı (FSF) tarafından denetlendi. [ 4 ]

1991 yılına gelindiğinde, GCC 1.x bir istikrar noktasına ulaşmıştı, ancak mimari sınırlamalar istenen birçok iyileştirmeyi engelledi, bu nedenle FSF, GCC 2.x üzerinde çalışmaya başladı.

GCC özgür yazılım olduğu için, örneğin C dışındaki diller için arayüzler yazmak gibi başka yönlerde çalışmak isteyen programcılar vardı , derleyicinin kendi çatallarını geliştirmekte özgürdüler. Birden fazla çatal , verimsizlik ve yönetilemezlik getirdi, ancak resmi GCC projesi tarafından kabul edilen kodu üretmenin zorluğu, FSF'nin resmi GCC 2 versiyonuna eklenenleri sıkı bir şekilde tutması nedeniyle birçokları için oldukça sinir bozucuydu. Bu, GCC'nin Eric S. Raymond'un The Cathedral and the Bazaar başlıklı makalesinde bahsedilen “katedral” yazılım geliştirme modelinin bir örneği olarak anılmasına neden oldu .

4.4 sürümünün yayınlanmasından bu yana. 1994 yılında BSD'nin piyasaya sürülmesinden sonra GCC, BSD sistemleri için varsayılan derleyici oldu .

Diller

Sürüm 4.6, C ( gcc ), C++ ( g++ ), Java ( gcj ), Ada ( GNAT ) , Objective -C ( gobjc ), Objective-C++ ( gobjc++ ) ve Fortran ( gfortran ) için ön uçları içerir . [ 5 ] Go ( gccgo ), Modula-2 , Modula-3 , Pascal ( gpc ), PL/I , D ( gdc ), Mercury , ve VHDL ( ghdl ) desteği de kutudan çıkmasa da mevcuttur . . [ 6 ]

Mimariler

Sürüm 4.2.3 şunları destekler:

Daha az bilinen mimariler için de destek vardır: A29K , Atmel AVR , C4x , D30V , DSP16xx , FR-30 , FR-V , Intel i960 , IP2000 , MN10200 , NS32K ve ROMP .

D10V , PDP-10 ve Z8000 gibi ek işlemciler için destek , FSF sürümünden ayrı tutulan sürümlerde sağlanmıştır.

Yapı

GCC'nin dış arayüzü genellikle bir UNIX sistemi için standarttır. gccKullanıcılar , verilen argümanları yorumlayan, her dosya için hangi derleyicinin kullanılacağına karar veren ve sonuçta ortaya çıkan kodla derleyiciyi çalıştıran, ardından tam bir program üretmek için muhtemelen bağlayıcıyı çalıştıran adlı bir denetleyici programı çağırır .

Derleyicilerin her biri, kaynak kodunu girdi olarak alan ve derleme kodunu çıkaran bağımsız bir programdır . Hepsinin ortak bir iç yapısı vardır: dili işleyen ve bir sözdizimi ağacı üreten dil başına bir ön uç ve bu ağaçları GCC'nin RTL'sine ( Kayıt Aktarım Dili ) dönüştüren bir arka uç, ardından çeşitli optimizasyonlar gerçekleştirir ve montajcı üretir. orijinal olarak Jack Davidson ve Chris Fraser tarafından bir algoritmaya dayanan mimariye özgü örüntü tanıma kullanılarak .

Ada ön ucunun çoğu Ada'da yazılmış olsa da, GCC'nin neredeyse tamamı C ile yazılmıştır. 30 Mayıs 2010'da GCC geliştirmede C++' ın kullanılacağı açıklandı . [ 7 ]

Ön uçlar

Ön uçlar, arka uç tarafından idare edilebilecek ağaçlar üretmek zorunda olduklarından dahili olarak değişir. Tüm ayrıştırıcılar yukarıdan aşağıya özyinelemeli ayrıştırıcılardır ve otomatik olarak oluşturulmamış, manuel olarak yazılmıştır.

Yakın zamana kadar, program temsil ağacı, kodunu oluşturmak istediğiniz işlemciden tamamen bağımsız değildi.

Son zamanlarda iki yeni dilden bağımsız ağaç formu dahil edilmiştir. Bu yeni biçimlere GENEL ve GIMPLE adı verilir. Ayrıştırma artık dile bağlı geçici ağaçlar oluşturularak ve bunları GENEL'e dönüştürerek yapılır. Gimplifier bunu, çok sayıda mimariden bağımsız ve dilden bağımsız optimizasyon için ortak dil olan GIMPLE'ye dönüştürür.

Ağaç optimizasyonu, dile bağlı olmadığı ve ayrıştırmayı içermediği için çoğu derleyici geliştiricisinin ön uç çalışmayı düşündüğü şeye girmez. GCC geliştiricileri derleyicinin bu kısmına orta ucun adını verdiler . Optimizasyonlar, hiç çalışmayan kodun kaldırılmasını, fazlalığın kısmen kaldırılmasını, ifadeleri değerlendirirken artıklığı içerir... Şu anda dizi bağımlılığına dayalı optimizasyonlar üzerinde çalışılmaktadır.

Arka uç

Arka ucun davranışı, örneğin en önemli bitlerin konumunu, kelime boyutunu, çağrılar için kuralı vb. tanımlamak için hedef mimariye özgü önişlemci makroları tarafından kısmen belirlenir. Arka uç bunları RTL üretimi için kullanır , ancak GCC'de bu işlemciden bağımsızdır ve soyut talimatların ilk dizisi hedef mimariye göre uyarlanmıştır.

Uyumlu IDE'ler

GNU/Linux için yazılmış çoğu Entegre Geliştirme Ortamı ve diğer bazı işletim sistemleri GCC'yi destekler. Bunlar şunları içerir:

Referanslar

  1. ^ "GCC Bültenleri" . GNU Projesi . 30 Ağustos 2009'da alındı . 
  2. ^ Stallman, Richard M. (Şubat 1986). "GNUStatus" . GNU Bülteni (Özgür Yazılım Vakfı) 1 (1) . 26 Eylül 2006'da alındı . 
  3. Tower, Leonard (1987) " GNU C derleyici beta testi sürümü, " comp.lang.misc USENET haber grubu; ayrıca bkz. http://gcc.gnu.org/releases.html#timeline
  4. Stallman, Richard M. (2001) " GCC'ye Katkı Sağlayanlar, ", gcc sürüm 2.95 için GNU Derleyici Koleksiyonunu (GCC) Kullanma ve Taşıma (Cambridge, Mass.: Özgür Yazılım Vakfı)
  5. "gccgo dil katkısı kabul edildi" 10 Ekim 2017'de Wayback Machine'de arşivlendi , gmane.org, Erişim tarihi: 26 Ocak 2010.
  6. GCC Front Ends 9 Şubat 2014, Wayback Machine adresinde arşivlendi , GCC.org, Erişim tarihi: 11 Mayıs 2008.
  7. GCC'de C++ kullanmak sorun değil

Bibliyografya

Ayrıca

Dış bağlantılar