![]() |
|
![]() ![]() ![]() |
|
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
Доброго дня.
Для изучения C++ в качестве IDE для "подопытных" программ была выбрана Qt Creator. Вопрос в том, как собрать, допустим, вот такой простой проект:
чтобы полученный в результате исполняемый файл не зависел от внешних библиотек? На данный момент результирующий HalloWorld.exe требует наличия рядом mingwm10.dll и libgcc_s_dw2-1.dll |
|||
|
||||
Madonna |
|
|||
![]() Forbidden love... ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 22.1.2009 Где: Москва Репутация: 3 Всего: 4 |
--------------------
Best regards, Madonna |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Тут информация общая. Она и к MSVC применима, но там ведь нет mingwm10.dll. После выхода MinGW 4.4.0 я не помню, чтобы появлялись полноценные факи по сборке Qt статически без зависимостей. Но если почитать на форумах и погуглить, то собрать самому можно.
Твой пример изначально к Qt никак не относится и собирается одной командой в консоли без IDE, файлов проектов или makefile'ов. Просто нужно почитать про ключи к компилятору и избавишься от зависимостей. |
||||
|
|||||
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
SABROG, у меня тот компилятор, который по-умолчанию идет с IDE - mingw32. Я побывал на сайте и почитал их официальную документацию (особенно внимательно разделы HOWTO и FAQ), но к сожалению ничего не нашел по моему вопросу Гугл по моим запросам выдает не совсем то, что мне нужно. Насколько я понял, там ребята предлагают совсем избавиться от зависимостей от этих библиотек при сборке. Я же рассматриваю, допустим, вариант их простого включения в результирующий исполняемый файл (+ 11 кБ) Кстати, для случая с libgcc_s_dw2-1.dll вроде достаточно использовать параметр -static-libgcc для GCC. Но как мне его указать для него, я не разобрался. Ведь в моем ведь случае сборка осуществляется через вызов mingw32-make Madonna, по твоей ссылке рассказ о том, как прилинковать всю используемую библиотеку Qt к EXE. Вроде не то |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну не получится. Уже писал об этом на другом форуме:
То есть грубо говоря пока винда 95,98 и ME не умрут окончательно и бесповоротно разработчики MinGW не сделают статический вариант. А я почему-то думаю, что это будет не скоро. Единственным вариантом мне кажется делать разные сборки MinGW под каждое семейство Windows. Но почему-то разработчики этого не делают. |
||||
|
|||||
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
Понятно. Тогда какой компилятор (или сборку компилятора) я могу использовать в связке с Qt Creator, и на выходе получать абсолютно независимый от внешних библиотек исполняемый файл? Возможно это вообще?
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Не знаю. В чем причина неприятия зависимых библиотек .dll'ок? |
|||
|
||||
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
SABROG, для проектов, использующих окна, потоки, какие-то интерфейсы etc - да, несомненно не против, а даже за.
Но для halloworld'а... считаю это не приемлемым. Здесь можно, и нужно, обойтись только зависимостью от win32-библиотек, которые реализуют WinAPI |
|||
|
||||
cutwater |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Для helloworld наличие зависимостей не должно нисколько Вас беспокоить, сударь.
тем более что решение проблемы уже прозвучало. Линковщик не ориентирован на уровень hello world.
Да в том то и дело что не нужно. Назовите хотя бы одну причину, кроме эстетической боли в ж*пе, опровергающую это утверждение. Это сообщение отредактировал(а) cutwater - 9.3.2010, 16:27 |
||||||
|
|||||||
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
cutwater, с тобой уже все понятно, можно было не повторять. Спасибо
В общем, вывод: сделать сабж на текущем уровне развития компиляторов С++ НЕВОЗМОЖНО Это сообщение отредактировал(а) nicestep - 9.3.2010, 20:31 |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Всё возможно, но я не сторонник этой идеи. Если в примере "Hello, World" не используются исключения и нити, то избавляться можно безопасно. Чтобы из сотни файлов сделать один, нормальные люди используют инсталлеры или на худой конец архивы. Поверь при разработке серьезного проекта это всё всплывет в подводных камнях очень не кстати, да и задачи будут посерьезней чем избавиться от mingwm10.dll. |
|||
|
||||
nicestep |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.11.2009 Где: Оренбург Репутация: нет Всего: нет |
SABROG, я понимаю. Спасибо за помощь
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |