Можно ли скомпилировать c ++ без какой-либо библиотеки - PullRequest
1 голос
/ 14 октября 2011

Можно ли скомпилировать c ++ без какой-либо библиотеки? Потому что, когда я пытался скомпилировать свою программу с помощью Mingw и cygwin после того, как был создан файл .exe, я не смог запустить его, и он сказал, что отсутствует библиотека. Для cygwin это был "cygwin1.dll".

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Двоичные файлы, созданные с помощью Cygwin, всегда зависят от cygwin1.dll. Однако, если вы хотите избежать этого, используйте опцию компоновщика -mno-cygwin. Таким образом, вы убедитесь, что не будет никакой зависимости от библиотеки времени выполнения cygwin, которую вам нужно поставлять вместе с приложением.

MinGW также имеет некоторые локальные зависимости. В частности, libgcc_s_dw2-1.dll (зависит от того, какой тип размотки используется в вашей цепочке инструментов) и mingwm10.dll. Чтобы избавиться от них, используйте опции -static-libgcc и -mthreads для своего компоновщика. Обратите внимание, что исключения C ++ зависят от этой опции.

Небольшая заметка, однако. Ваш вопрос - "Можно ли скомпилировать c ++ без какой-либо библиотеки?" неверно, поскольку всегда некоторые зависимости от библиотек (если вы не создаете двоичный файл для barebone-оборудования без ОС), например user32.dll для Windows. Конечно, ни Cygwin, ни MinGW не подходят для этого.

2 голосов
/ 14 октября 2011

Общий ответ - нет.Поддержка времени выполнения, требуемая кодом C ++ в целом, для включения таких функций, как RTTI и обработка исключений.Поэтому в любом случае вы должны связать исполняемый файл с libstdc ++, динамически или статически.

2 голосов
/ 14 октября 2011

Это не просто библиотека;это среда выполнения, которая вам необходима для запуска приложений, скомпилированных с Cygwin.

Если вы действительно используете MinGW, тогда вы можете полностью отказаться от Cygwin с -mno-cygwin, но даже тогда вам понадобится среда MinGW и,возможно, стандартная библиотека C ++.Тем не менее, они обычно могут быть связаны статически , так что вам не нужно отправлять какие-либо зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...