#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 среды выполнения в тот же каталог, что и ваше приложение