Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 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. Показов 30093. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru