Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/154: Рейтинг темы: голосов - 154, средняя оценка - 4.59
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

MinGW версии 4.5.0 содержит libgcc_s_dw2-1.dll без которой ни одна скомпилированная прога не запускается. А как же запускать проги на других машинах?

15.09.2011, 17:31. Показов 29990. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
То есть установил такой пакет и скомпилил прогу
C++
1
2
3
4
5
6
7
#include <stdio.h>
using namespace std;
 
int main() {
 getchar();
 return 0;
}
так вот, по загрузке программы и по запуску в её адресное пространство загружается библиотека libgcc_s_dw2-1.dll, которую MinGW "приволок" с собой и установил её в одну папку с g++. Хотя зачем эта библиотека нужна-уму непостижимо. Хорошо, у меня эта билиотека стараниями того же MinGW есть. А как же запускать прогу на других компьютерах, там ведь её может не быть! (Естессно, чтобы прога нрмально нашла на моём компе libgcc_s_dw2-1.dll, необходимо в переменную Path добавить: C\Dev-Cpp\bin, она там её найдёт.)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2011, 17:31
Ответы с готовыми решениями:

Программа, скомпилированная по всем правилам генерирует исключения на других машинах
Здравствуйте, уважаемые форумчане! Хочу задать вам один вопрос. Я написал программу на C# в VisualStudio 2010 под .Net 4.0(код могу...

Сборка Qt: отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll
В связи с тем, что часто возникают одни и те же вопросы, а в нете копаться никто не любит привожу перевод буржуйской вики по отлучению...

MinGW - скомпилированная программа требует наличия libstdc++-6.dll и libgcc_s_seh-1.dll
Добрый день. При компиляции с помощью Visual Studio программа не требует никаких dll, можно ли в данном случае обойтись без них? Весят...

7
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
15.09.2011, 21:12
Можно системные библиотеки линковать статически, для этого указать в опциях компилятора ключи -static-libgcc и -static-libstdc++, или же просто -static (тогда всё должно статически линковаться). Хотя это, на самом деле, скорее опции компоновщика.
3
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.09.2011, 21:42  [ТС]
Спасибо, я знал, что ты в этом разбираешься, помогло -static; я правильно понял, что при компоновке некоторый нужный код из libgcc_s_dw2-1.dll включается в исполняемый модуль и при его выполнении libgcc_s_dw2-1.dll уже просто не нужен? Ну это конечно в общих чертах. Вот я ещё прочёл:

"-static
Linker (опция линкёра то есть)
Компоновщик будет иrнорировать любые разделяемые библиотеки и разрешать
все внешние ссылки непосредственным включением в вырабатываемый объектный
код статических объектных файлов. На системах, не поддерживающих динамичес
кой компоновки, установка этой опции не изменяет вырабатываемый выходной код.
Опция может быть записана в форме static. См. также опцию shared"

До полного понимания мне далеко ещё, компилятор специально не изучал.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
16.09.2011, 09:17
я правильно понял, что при компоновке некоторый нужный код из libgcc_s_dw2-1.dll включается в исполняемый модуль и при его выполнении libgcc_s_dw2-1.dll уже просто не нужен?
Не совсем так
Напрямую код из dll-ки вшить в программу не получится
Код берется из другой библиотеки, но он идентичен по функциональности

Фактически каждая библиотека может быть собрана в двух видах
1) в виде *.dll - для динамического линкования
2) в виде *.a или *.lib - для статического линкования

Добавлено через 1 минуту
компилятор специально не изучал.
Тут надо не компилятор изучать
А общий принцип работы компилятора,
что есть статический код,
что есть динамической код
как сюда относится linker
И как это все вместе работает ...

Добавлено через 52 секунды
А как же запускать прогу на других компьютерах, там ведь её может не быть!
Копируешь exe-файл своей программы
Рядом кладешь эту dll-ку
Это нормально - сложные программы состоят из сотен файлов
1
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 22
10.02.2012, 19:19
Со статическим и динамическим связыванием библиотек понятно..

А что насчет лицензии в обоих случаях? MinGW лицензирован под GPL, которая обязывает открывать исходники проекта при включении в него (в том числе динамически) кода под GPL.
А если полученная программа требует для работы библиотеки MinGW, то это как раз этот случай... или нет?

Кто-нибудь может что-то пояснить по этому поводу?
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
10.02.2012, 21:34
Зачем ты хочешь распространять свой закрытый код в составе mingw? Рантайм в public domain
0
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 22
11.02.2012, 00:07
То есть libgcc_s_dw2-1.dll и mingwm10.dll являются общественным достоянием?

Цитата Сообщение от NoMasters Посмотреть сообщение
Зачем ты хочешь распространять свой закрытый код в составе mingw?
- извини, не понял что значит в составе mingw. Я имею ввиду только компиляцию в mingw.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.02.2012, 15:02
А есть еще подобные ключики? Те, что привел grizlik78 у меня не работают =(
Вот полная команда для сборки:
Code
1
2
3
4
-------------- Build: Release in findfiless ---------------
 
mingw32-g++.exe -Wall -fexceptions  -O2  -O3 -std=c++0x -static-libstdc++ -static-libgcc   -IC:\Boost\include\boost-1_48  -c C:\Users\shadeware\Documents\code-blocks\findfiless\main.cpp -o obj\Release\main.o
mingw32-g++.exe -LC:\Boost  -o bin\Release\findfiless.exe obj\Release\main.o   -s  "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libgmp.a" C:\Boost\lib\libboost_chrono-mgw46-mt-s-1_48.a C:\Boost\lib\libboost_chrono-mgw46-mt-sd-1_48.a C:\Boost\lib\libboost_filesystem-mgw46-mt-s-1_48.a C:\Boost\lib\libboost_filesystem-mgw46-mt-sd-1_48.a C:\Boost\lib\libboost_regex-mgw46-mt-s-1_48.a C:\Boost\lib\libboost_regex-mgw46-mt-sd-1_48.a C:\Boost\lib\libboost_system-mgw46-mt-s-1_48.a C:\Boost\lib\libboost_system-mgw46-mt-sd-1_48.a
MinGW устанавливал с помощью автоинсталлятора с офф сайта.

Мдааа...
Проблема решена. На форуме оно в 2 строчках отображается, просто перенес эти опции из первой строчки во вторую - и все заработало.
А в code-blocks там эти две строчки разнесены на 6, я и не заметил, что там на 2 этапа сборка разделена.
Я блондинко >_<
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2012, 15:02
Помогаю со студенческими работами здесь

MinGW. При запуске откомпилированной программы вылетает ошибка, что библиотека libgcc_s_dw2-1.dll отсутствует.
Решил освоить этот компилятор, поставил под windows. Пишу банальный хелло ворлд. Пробую скомпилировать g++ test.cpp - o test При...

Может быть вирус удалил системный файл CОМRеs.dll...Не запускается ни одна прога...
Может ли быт вирус удалял системную файлу CОМRеs.dll...Не запустится ни одна прога...

MinGW после обновления выдает ошибку "отсутствует libgcc_s_dw2-1.dll"
Здравствуйте! В данный момент я изучаю язык C++ и прохожу различные курсы, которые подразумевают написание маленьких программ. Где-то...

Программа скомпилированная в Debug не запускается на других компьютерах
Здравствуйте, у меня вот такой вопрос. Я пользуюсь VC++ 2005. Так вот: при компиляции в дебуге мои файлы на чужом компьютере не...

Не запускается на других машинах
Суть такая. Экзешник не запускается на машине без Visual studio. Пишет что не найдено msvcp100.dll. Что делать? Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru