Включает ли новая установка Windows стандартную библиотеку C ?

#c #c #windows #gcc #mingw

#c #c #Windows #gcc #mingw #c

Вопрос:

Я провожу несколько экспериментов с Mingw-w64, и он отлично работает при компиляции обычного кода на C, подключаясь к системе Windows MSVCRT.DLL Библиотека C. Но, если я компилирую код C , то g mingw ссылается на то, что выглядит как библиотека GNU libstdc . Почему? Этого не происходит с обычными двоичными файлами C. Я постоянно вижу коммерческое программное обеспечение Windows, включая пакет Microsoft «C redist», который, как я полагаю, соответствует версии Visual C , которую они используют для разработки своего программного обеспечения. Таким образом, похоже, что на самом деле в Windows по умолчанию нет библиотеки C . Я бы хотел использовать «системную» библиотеку C и не использовать библиотеку GNU, если это возможно, чтобы уменьшить размер двоичных файлов, которые компилирует mingw. Но мне также не нужен отдельный распространяемый файл C , который необходимо устанавливать. Я застрял с библиотекой GNU?

Комментарии:

1. Не существует «системной библиотеки C «. MSVCRT.DLL это среда выполнения Microsoft Visual C , она не поставляется с предустановленной Windows, поэтому ее необходимо установить. Скорее всего, другое программное обеспечение уже установило ее за вас. С другой стороны, если вы компилируете свои приложения для использования статической версии этой библиотеки, а не динамической версии, тогда вам вообще не нужна DLL.

2. @RemyLebeau У вас есть источник по этому утверждению? Мне трудно поверить, что Windows 10 по умолчанию не поставляется с каким-либо MVCR.

3. Среда выполнения visual Studio 2015 предустановлена в Windows 10, но gcc может использовать только libstdc , вам нужно использовать visual studio или clang для использования среды выполнения visual studio

Ответ №1:

В сборке MinGW / MinGW-w64 используются системные стандартные библиотеки, которые являются частью Windows.

Распространяемые пакеты Visual C и runtime необходимы только тогда, когда исходные тексты скомпилированы с MSVC.

Если ваша сборка MinGW / MinGW-w64 не связана статически, вам может потребоваться отправить DLL-файлы libstd, но вы можете просто поместить их в то же место, что и ваши файлы .exe и / или .dll, вместе с любыми другими файлами dependancy .dll.

Мне действительно нравится тот факт, что сборки MinGW / MinGW-w64 не нуждаются в распространяемом Visual C по нескольким причинам:

  • Пользователю не нужно устанавливать еще один распространяемый Visual C .
  • Двоичные файлы компактны и не зависят от других библиотек Microsoft, кроме тех, что находятся в операционной системе, что увеличивает вероятность того, что ваше программное обеспечение будет хорошо работать в разных версиях Windows.
  • Инструкции по установке (и удалению) (или код установщика) проще, поскольку не требуется устанавливать распространяемую зависимость Visual C . Фактически вы даже можете запускать свое программное обеспечение как переносимое приложение без установщика.

Комментарии:

1. Вы можете сделать то же самое с Visual Studio и поместить библиотеки DLL среды выполнения в тот же каталог, что и ваше приложение