1 Haziran 2020 Pazartesi

C Runtime ve Linkleme

Linux Kernel (Çekirdek) C Runtime Kullanır mı?
Açıklaması şöyle. Normalde kullanmaz. Kernel her ne kadar C dili kullanılarak kodlansa bile C Runtime kullanmaz.
The kernel is written in C, but it doesn’t use the C library. Even if it did, a C library loaded along with the kernel for the kernel’s use would only be available to the kernel (unless the kernel made it explicitly accessible to user space, in some way or other), so it wouldn’t help reduce the memory requirements for programs.

That said, in most cases some of the earliest programs run, after the kernel starts, use the C library, so it ends up being mapped early on, and it’s highly likely that the portions of the library that end up being widely used will always remain in physical memory.
Visual Studio
Giriş
Seçenekleri değiştirmek için şöyle yaparız.
Project -> Properties / "Configuration Properties" -> C/C++ -> Code Generation / Runtime Library
/MD
Dinamik olarak linkler. Açıklaması şöyle
Causes the application to use the multithread-specific and DLL-specific version of the run-time library.
Kullanılan DLL ismi şunun gibi bir şeydir.
MSVCP140.dll
Eğer DLL bulunamıyorsa hatası alınıyorsa Microsoft Visual C++ Redistributable package kurulur.

/MDd 
Dinamik olarak linkler. Açıklaması şöyle
Multi-threaded Debug DLL (/MDd)
Bu seçenek ile Visual Studio'ya mahsus _DEBUG macrosu da etkinleşir. Kullanılan DLL ismi şunun gibi bir şeydir.
MSVCP140D.dll
Eğer DLL bulunamıyorsa hatası alınıyorsa Microsoft Visual C++ Redistributable package kurulur.

/MT
Static olarak linkler. Açıklaması şöyle
Causes the application to use the multithread, static version of the run-time library.
Eğer Dll için kullanılıyorsa, DLL kendi belleğini yönetmelidir. Açıklaması şöyle
It is well-known that if DLLs are statically linked (/MT flag in MSVC), the DLL that has allocated the memory MUST deallocate it; otherwise memory deallocation will cause runtime errors.
/MTd
Bu seçenek ile Visual Studio'ya mahsus _DEBUG macrosu da etkinleşir.

Hiç yorum yok:

Yorum Gönder