gcc ne demek?

# GNU Compiler Collection (GCC)

**GNU Compiler Collection** (GCC), [GNU Projesi](https://www.gnu.org/) tarafından üretilen, özgür ve açık kaynaklı bir derleyici sistemidir. Başlangıçta yalnızca [C programlama dili](https://www.nedemek.page/kavramlar/c%20programlama%20dili) için bir derleyici olarak tasarlanmış olsa da, zamanla C++, Objective-C, Fortran, Ada, Go ve D dahil olmak üzere birçok farklı programlama dilini destekleyecek şekilde genişletilmiştir. GCC, çeşitli işletim sistemlerinde ve donanım mimarilerinde kullanılabilirliği sayesinde, en yaygın kullanılan derleyicilerden biridir.

## Tarihçe

GCC'nin kökleri 1980'lere dayanır. İlk olarak [Richard Stallman](https://www.nedemek.page/kavramlar/richard%20stallman) tarafından GNU projesi için özgür bir derleyici olarak yazılmıştır. Başlangıçta "GNU C Compiler" (GNU C Derleyicisi) anlamına gelen GCC, daha sonra birden fazla dili destekleyecek şekilde genişletildikten sonra "GNU Compiler Collection" (GNU Derleyici Koleksiyonu) olarak yeniden adlandırılmıştır.

*   **1987:** GCC'nin ilk sürümü yayınlandı.
*   **1990'lar:** C++ desteği eklendi ve GCC, özgür yazılım dünyasında yaygın olarak benimsendi.
*   **2000'ler ve sonrası:** Diğer diller için destekler eklendi ve GCC sürekli olarak geliştirilmeye devam etti.

## Temel Özellikleri

*   **Çoklu Dil Desteği:** C, C++, Objective-C, Fortran, Ada, Go, D gibi çeşitli programlama dillerini destekler.
*   **Çoklu Platform Desteği:** [Linux](https://www.nedemek.page/kavramlar/linux), [Windows](https://www.nedemek.page/kavramlar/windows), [macOS](https://www.nedemek.page/kavramlar/macos) ve diğer birçok işletim sisteminde çalışabilir.
*   **Optimizasyon:** Kodun performansını artırmak için çeşitli optimizasyon teknikleri sunar. Bu optimizasyonlar, kodun boyutunu küçültmek, yürütme hızını artırmak veya her ikisini de yapmak için kullanılabilir.
*   **Standartlara Uygunluk:** Çeşitli programlama dillerinin standartlarına uygun bir şekilde çalışır. Örneğin, [C++](https://www.nedemek.page/kavramlar/c++) derlemesi için [ISO C++ standardı](https://www.nedemek.page/kavramlar/iso%20c++%20standardı)'na uyumluluk hedeflenir.
*   **Genişletilebilirlik:** Eklentiler ve kütüphaneler aracılığıyla genişletilebilir. Bu, kullanıcılara GCC'nin işlevselliğini ihtiyaçlarına göre özelleştirme olanağı tanır.
*   **Özgür Yazılım:** [GNU Genel Kamu Lisansı](https://www.nedemek.page/kavramlar/gnu%20genel%20kamu%20lisansı) (GPL) altında lisanslanmıştır, bu da kullanıcıların yazılımı özgürce kullanmasına, değiştirmesine ve dağıtmasına olanak tanır.

## Çalışma Prensibi

GCC, kaynak kodu alıp hedef koda dönüştürmek için bir dizi aşamadan geçer. Bu aşamalar şunları içerir:

1.  **Önişleme (Preprocessing):** `#include` direktiflerini işler, makroları genişletir ve koşullu derleme direktiflerini değerlendirir.
2.  **Derleme (Compilation):** Önişlenmiş kodu, derleyici tarafından yorumlanabilir bir ara dile (genellikle assembly diline) çevirir.
3.  **Assembly (Assembly):** Assembly kodunu, makine koduna dönüştürür. Bu adım, hedef platformun mimarisine özgü talimatları içerir.
4.  **Bağlama (Linking):** Makine kodunu, gerekli kütüphanelerle birleştirerek yürütülebilir bir dosya oluşturur.

## Kullanım Alanları

GCC, çok çeşitli uygulamalarda kullanılır:

*   **Sistem Yazılımı Geliştirme:** İşletim sistemleri, aygıt sürücüleri ve diğer düşük seviyeli sistem yazılımları geliştirmek için kullanılır.
*   **Uygulama Geliştirme:** Masaüstü uygulamaları, web uygulamaları ve mobil uygulamalar gibi çeşitli uygulamalar geliştirmek için kullanılır.
*   **Gömülü Sistemler:** Gömülü sistemler için yazılım geliştirmek için kullanılır.
*   **Akademik Araştırma:** Bilgisayar bilimi ve mühendislik alanlarında yapılan araştırmalarda yaygın olarak kullanılır.
*   **Oyun Geliştirme:** Birçok oyun geliştirme motoru ve kütüphanesi GCC ile derlenebilir.

## Örnek Kullanım

Bir [C programı](https://www.nedemek.page/kavramlar/c%20programı)'nı derlemek için şu komut kullanılabilir:

```bash
gcc hello.c -o hello

Bu komut, hello.c adlı C kaynak kodu dosyasını derler ve hello adlı bir yürütülebilir dosya oluşturur.

C++ programı'nı derlemek için ise g++ kullanılır:

g++ hello.cpp -o hello

Avantajları

  • Ücretsiz ve Açık Kaynak: GPL lisansı sayesinde ücretsiz olarak kullanılabilir, değiştirilebilir ve dağıtılabilir.
  • Geniş Platform Desteği: Çeşitli işletim sistemleri ve donanım mimarilerinde kullanılabilir.
  • Yüksek Kaliteli Kod: GCC, yüksek performanslı ve güvenilir kod üretir.
  • Geniş Topluluk Desteği: Büyük ve aktif bir geliştirici topluluğu tarafından desteklenmektedir.
  • Standartlara Uygunluk: Çeşitli programlama dillerinin standartlarına uygun olarak çalışır.

Dezavantajları

  • Öğrenme Eğrisi: Bazı karmaşık optimizasyon seçenekleri ve konfigürasyon ayarları nedeniyle yeni başlayanlar için öğrenme eğrisi yüksek olabilir.
  • Boyut: Büyük bir derleyici sistemi olduğu için kurulum boyutu ve kaynak tüketimi diğer derleyicilere göre daha fazla olabilir.
  • Hata Mesajları: Bazı durumlarda hata mesajları anlaşılması zor olabilir.

Diğer Derleyicilerle Karşılaştırma

GCC, diğer derleyicilerle karşılaştırıldığında, geniş platform desteği, özgür yazılım olması ve yüksek kaliteli kod üretme yeteneği gibi avantajlara sahiptir. Ancak, bazı ticari derleyiciler, belirli platformlar için daha iyi performans veya daha gelişmiş özellikler sunabilir. Örneğin, Microsoft Visual C++ özellikle Windows platformu için optimize edilmişken, Intel C++ Compiler Intel işlemciler için daha iyi performans sağlayabilir.

Sonuç

GCC, çok çeşitli programlama dillerini destekleyen, geniş platform desteği sunan ve özgür yazılım lisansı altında dağıtılan güçlü bir derleyici sistemidir. Sistem yazılımı geliştirmeden uygulama geliştirmeye, gömülü sistemlerden akademik araştırmalara kadar birçok alanda yaygın olarak kullanılmaktadır.

Kendi sorunu sor