Sadece matematik kütüphanesinden bir işlevi ifade eden bir programı derlemek için gcc tarafından -lm
bayrağının gerekli olduğunu keşfettim. Zaman kitaplığı gibi diğer kütüphaneleri içeren programları derlerken neden açık bir bağlantı bayrağı gerektiğine merak ediyorum. time()
işlevinin çağrıldığı bir program yazarsam, hiçbir bağlantı seçeneğiyle bile sorunsuz bir şekilde derlerdi. Ama matematik kütüphanesi içeren bir program sadece -lm
bayrağı olmadan çalışmayacaktır.gcc: matematik kütüphanesini bağlamak için neden -lm bayrağı gerekiyor?
Bu davranışın ardındaki nedenini açıklayan herhangi biri olabilir mi? Zaman ayırdığın için teşekkürler. time()
ve diğer bazı fonksiyonlar kendisi ve GCC hep bağlantılar sürece libc C kütüphanesinde (libc
) tanımlanan builtin
Çünkü
Garip tarihsel nedenler, ancak çoğunlukla bunun nedeni şu şekildedir: http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c – birryree