Это всего лишь кусок кода «привет мир» на C++.Почему двоичный файл, созданный clang, больше, чем у visual studio
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("hello");
return 0;
}
Я скомпилировал код с clang 3.9. Команда: clang -m32 hello.cpp -o hello.exe, а целевой размер исполняемого файла - около 44kb. Это не имело никакого значения с добавлением опции «O3» в команду.
В то время как я был скомпилирован с Visual Studio 2010, размер исполняемого файла целевой только 6kb для версии и 28kb для отладки версии.
Может ли кто-нибудь помочь объяснить разницу между двоичными версиями двух версий. Любая помощь будет оценена по достоинству.
Мой хрустальный шар говорит, что Clang по умолчанию статически связывает библиотеки времени выполнения, тогда как MSVC по умолчанию динамически связывает их. Это означает, что исполняемые файлы, созданные с помощью MSVC, меньше, но для них требуется вспомогательная DLL. Проверьте свои настройки компилятора/компоновщика, чтобы убедиться, что это действительно так. –
Вы также можете попробовать флаг '-Oz' для Clang. – arrowd
@CodyGray Спасибо. Ваш хрустальный шар знает, как динамически связывать библиотеки времени выполнения. Я без глюков искал googled. – user3113626