Clang konak derleyici birkaç ayarlarını kullanır (çınlama varsayılan Apple'ın OSX/macOS ve variants of FreeBSD için). Diğer ikili dosyalar ve OS kütüphaneleri ile daha fazla uyumluluk kazanmak için yararlıdır.
Genellikle C++ programlar/kütüphanelerde ABI uyumluluğu için crt dosya ve derleyici iç başlıkları ve C++ kütüphane için (bağlayıcı ve Çevirici için) konak binutils, ev sahibi derleyici kullanır.
toolchain
gcc sürücü aracı zincirlerinin doğrudan anlayışa sahip bulunmaktadır. Her bir gcc binary, kabaca tek bir ToolChain içine gömülmüş olan bilgiye karşılık gelir.
çınlama sürücü taşınabilir olması ve karmaşık bir derleme ortamları desteklemek için tasarlanmıştır. Tüm platform ve araç zincirine özgü kodlar, soyut veya iyi tanımlanmış arayüzlerin (platformun bir sürücü sürücüsü olarak kullanılmasını destekleyip desteklemediği gibi) arkasında korunmalıdır.
Bind: Aracı & Dosya adı seçilmesi. Kavramsal olarak, sürücü, Eylem (ler) i Araçlar'a atamak için bir üst aşağı eşleme gerçekleştirir. ToolChain, belirli bir eylemi gerçekleştirmek için aracın seçilmesinden sorumludur; bir kez seçildiğinde sürücü, ek eylemlerle eşleşip eşleşmeyeceğini görmek için araçla etkileşir (örneğin, tümleşik bir önişlemciye sahip olarak).
sürücü Aracı bağlamaları gerçekleştirmek için bir araç zinciri ile etkileşime girer. Her bir ToolChain, belirli bir mimari, platform ve işletim sistemi için derleme için gerekli tüm araçlar hakkında bilgi içerir. Tek bir sürücü çağrısı, ayrı mimariler için araçlar ile etkileşimde bulunmak için tek bir derleme sırasında birden fazla ToolChains sorgulayabilir. Bu aşamanın
sonuç doğrudan bilgisayarlı değildir, ancak sürücü -ccc-print-bağlamaları seçeneği aracılığıyla sonuçlarını yazdırabilirsiniz. Örneğin:
$ clang -ccc-print-bindings -arch i386 -arch ppc t0.c
# "i386-apple-darwin9" - "clang", inputs: ["t0.c"], output: "/tmp/cc-Sn4RKF.s"
# "i386-apple-darwin9" - "darwin::Assemble", inputs: ["/tmp/cc-Sn4RKF.s"], output: "/tmp/cc-gvSnbS.o"
# "i386-apple-darwin9" - "darwin::Link", inputs: ["/tmp/cc-gvSnbS.o"], output: "/tmp/cc-jgHQxi.out"
# "ppc-apple-darwin9" - "gcc::Compile", inputs: ["t0.c"], output: "/tmp/cc-Q0bTox.s"
# "ppc-apple-darwin9" - "gcc::Assemble", inputs: ["/tmp/cc-Q0bTox.s"], output: "/tmp/cc-WCdicw.o"
# "ppc-apple-darwin9" - "gcc::Link", inputs: ["/tmp/cc-WCdicw.o"], output: "/tmp/cc-HHBEBh.out"
# "i386-apple-darwin9" - "darwin::Lipo", inputs: ["/tmp/cc-jgHQxi.out", "/tmp/cc-HHBEBh.out"], output: "a.out"
Bu, derleme dizisi için bağlanmış olan araç zinciri, alet, girişleri ve çıkışları göstermektedir. Burada clang i386 mimarisinde t0.c derlemek için kullanılır ve aracın darwin özel sürümleri sonucu birleştirmek ve bağlamak için kullanılır, ancak araçların jenerik gcc sürümleri PowerPC'de kullanılır.
Clang libgcc ve crt nesne dosyaları bağlıdır.Elbette bağımsız olarak kurulabilir ve kurulabilirler, ancak bunu yapmanın kanonik bir yolu yoktur. –