C standart kütüphanesi statik kütüphane mi yoksa dinamik kütüphane mi?

C standart kütüphane işlevi (ex.prinf, scanf) statik kütüphane işlevi veya dinamik kütüphane işlevi olarak mı işlenir?

4
Bu tamamen uygulamaya bağımlıdır, herhangi bir şey olabilir ve her ikisi de bir derleyici anahtarına bağlı olarak aynı uygulama altında mümkün olabilir. Gerçekten, cevap vermek imkansız. Uygulamam varsayılan olarak MSVCRT ile dinamik olarak bağlanıyor, ancak bunun anlamı nedir?
katma yazar Damon, kaynak
Bir fonksiyonun statik veya dinamik olması ne anlama geliyor?
katma yazar David Heffernan, kaynak
@MitchWheat Eğer öyleyse, soru "Programımı nasıl bağlarım?" ;-)
katma yazar David Heffernan, kaynak
"Bağlantı" demek istediklerini farz ediyorum.
katma yazar Mitch Wheat, kaynak
@David: gerçekten .... :)
katma yazar Mitch Wheat, kaynak

2 cevap

programınızı nasıl bağlandığınıza bağlıdır. iki yoldan gidebilirsin. VS'de, /MT (statik) veya /MD (dinamik) belirtebilirsiniz. Gcc'de, programınızı statik kitaplığa bağlamak için -static-libgcc bayrakını belirtebilirsiniz.

http://gcc.gnu.org/onlinedocs/gcc/Link-Options gcc bayrakları ve > VS için http://msdn.microsoft.com/en-us/library/abx4dbyh (v = vs80) .aspx .

5
katma
-static-libgcc , yalnızca standart C kütüphanesi olmayan libgcc ile ilgilidir. Yine de libc.so yerine libc.a bağlantısını yapabilirsiniz.
katma yazar wRAR, kaynak
Cevabınız için teşekkürler
katma yazar user966379, kaynak
/ MT ve/MD, linker seçenekleri değil derleme seçenekleridir.
katma yazar Hans Passant, kaynak

Gerçekten umursamaman gerek.

Ve derleyici, standardın ne anlama geldiğini belirtmek koşuluyla bazı standart fonksiyonları özel olarak halledebilirdi.

Bazen GCC böyle şeyleri yapar, mesela bir çağrıyı bir döngüde optimize eder ...

Sorunuz, programınızı foo ile nasıl bağladığınız ise, GNU/Linux'ta ldd foo komutu buna cevap verir.

Şerefe.

1
katma