Название: Единый EXE файл Отправлено: bekor от Март 02, 2012, 23:21 допустим я написал некое приложение на Qt и хочу использовать ее на другом компьютере,
но если попытатся запустить приложение из папки debug то будет ругаться что отсутствуют dll библиотеки. Можно конечно копировать все необходимые ДЛЛ-ы в папку с *.exe файлом но это более 200 мегабайт. Как это решается ? Название: Re: Единый EXE файл Отправлено: mutineer от Март 02, 2012, 23:24 Много раз поднимался этот вопрос на форуме... поищи по словам "статическая сборка"
Название: Re: Единый EXE файл Отправлено: BRE от Март 02, 2012, 23:28 допустим я написал некое приложение на Qt и хочу использовать ее на другом компьютере, Более 200 это отладочные версии библиотек, релизные значительно меньше.но если попытатся запустить приложение из папки debug то будет ругаться что отсутствуют dll библиотеки. Можно конечно копировать все необходимые ДЛЛ-ы в папку с *.exe файлом но это более 200 мегабайт. Как это решается ? Название: Re: Единый EXE файл Отправлено: LisandreL от Март 02, 2012, 23:30 Ну а чтобы было не 200 метров достаточно релизную сборку использовать, а не дебажную.
Название: Re: Единый EXE файл Отправлено: bekor от Март 02, 2012, 23:34 В папке release пусто, а configure -static ругается "Unable to detect the platform from environment. ....."
Название: Re: Единый EXE файл Отправлено: mutineer от Март 02, 2012, 23:38 В папке release пусто, а configure -static ругается "Unable to detect the platform from environment. ....." в папке релиз пусто, потому что релизную сборку ты не делал Название: Re: Единый EXE файл Отправлено: kambala от Март 03, 2012, 00:46 В папке release пусто, а configure -static ругается "Unable to detect the platform from environment. ....." ну так укажи параметром платформу, например -platform win32-msvc2010Название: Re: Единый EXE файл Отправлено: bekor от Март 14, 2012, 13:57 что то никак не получается,
набираю в командной строке configure -static -platform mingw32 но строка ругается что Invalid option "mingw" for -platform в место mingw32 пробовал mingw w32-mingw win32-mingw mingw-w32 mingw-win32 ни один из вариантов не подошел, при установке qt 4.8.0 указал путь для mingw (та которая находится в qt creator) подскажите как победить это ... Название: Re: Единый EXE файл Отправлено: kambala от Март 14, 2012, 14:10 доступные платформы находятся в QTDIR/mkspecs. в твоём случае надо указывать win32-g++
Название: Re: Единый EXE файл Отправлено: taifun от Март 14, 2012, 14:12 http://habrahabr.ru/post/137233/ (http://habrahabr.ru/post/137233/) - Qt — статическая линковка библиотеки под Windows
Название: Re: Единый EXE файл Отправлено: bekor от Март 15, 2012, 20:47 Получилось, но теперь почему то при компиляции библиотеки qextserialport
обильно выводятся ошибки Код: obj/main.o:main.cpp:(.text+0x26): undefined reference to `_imp___ZN12QApplicationC1ERiPPci' Название: Re: Единый EXE файл Отправлено: Pupil от Май 24, 2012, 12:44 напишите, пожалуйста, линк на мануал статической сборки не под win, а под Linux. Спасибо!
Название: Re: Единый EXE файл Отправлено: stima от Май 24, 2012, 15:13 Статической сборки чего?
Название: Re: Единый EXE файл Отправлено: Bepec от Май 24, 2012, 15:36 Сборки Qt из исходников, видимо...
Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 24, 2012, 15:40 напишите, пожалуйста, линк на мануал статической сборки не под win, а под Linux. Спасибо! Статическая сборка под Linux не нужна (как и под Windows). Название: Re: Единый EXE файл Отправлено: Bepec от Май 24, 2012, 15:41 А почему не нужна??? Оо
Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 24, 2012, 16:11 А почему не нужна??? Оо А ты можешь назвать хоть одну объективную причину для статической сборки для обычной программы, кроме "я так хочу"? Я тоже как-то пробовал статику, результаты мне не понравились. http://www.prog.org.ru/topic_21069_0.html Название: Re: Единый EXE файл Отправлено: Bepec от Май 24, 2012, 16:47 Очень просто - портабельность программы. Те же мобильные платформы "всё в 1".
Конечно быстродействие и прочее, но в некоторых программах даже пятисекундное замедление не играет роли, тем более если искусно скрыто ;) Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 24, 2012, 17:46 Очень просто - портабельность программы. Интересно, а как статика улучшает портабельность? Я не говорю сейчас о мобильных платформах, почти все вопросы о статике тут были для десктопа. Название: Re: Единый EXE файл Отправлено: Bepec от Май 24, 2012, 19:04 Очень просто, проверь что копируется быстрее - один большой файл, или много маленьких :D
Мне лично удобнее гораздо иметь каталог 'Программ', которые не тянут за собой сотни и сотни файлов ;) Название: Re: Единый EXE файл Отправлено: kambala от Май 24, 2012, 19:16 Очень просто, проверь что копируется быстрее - один большой файл, или много маленьких :D много - это штук 5?а ещё можно распространять в архиве Мне лично удобнее гораздо иметь каталог 'Программ', которые не тянут за собой сотни и сотни файлов ;) переходи на мак ос :) но там всё равно сотни файлов находятся внутри пакетов программ.Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 24, 2012, 19:43 Очень просто, проверь что копируется быстрее - один большой файл, или много маленьких :D Какое отношение имеет скорость копирования файлов к портабельности? О чём вообще речь, где я? ::) Будут, в конце концов, аргументы за статическую сборку? Мне лично удобнее гораздо иметь каталог 'Программ', которые не тянут за собой сотни и сотни файлов Лично у меня нет ни одной standalone программы, всё установлено через инсталляторы. И я считаю это дурным тоном, распространять программы исключительно в виде standalone. Эта дурацкая практика приводит к тому, что уже и в линуксе хотят статическую сборку, когда на это нет никаких причин, но просто такая привычка. Название: Re: Единый EXE файл Отправлено: Bepec от Май 24, 2012, 19:54 Кхм. Камбала - у меня самая большая программа на флешке - штук 300 файликов :)
Alex Gustov - я тебе привожу аргумент :D Портабельность - возможность переноса программы, без излишних телодвижений. Когда я хочу программу использовать на разных компьютерах - приходится таскать на флешке установщик ;) Камбала - спасибо за информацию, незнал. Но я привожу аргумент, необходимый достаточно редко, но иногда действительно необходимый ;) Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 24, 2012, 20:00 Портабельность - возможность переноса программы, без излишних телодвижений. Это какое-то новое определение портабельности ::) Когда я хочу программу использовать на разных компьютерах - приходится таскать на флешке установщик ;) Для своего проекта я распространяю установщик и standalone динамическую программу, standalone программа лежит внутри каталога с нужными библиотеками, не вижу никаких проблем. Это все аргументы, да? ;D Название: Re: Единый EXE файл Отправлено: Alex_C от Май 25, 2012, 22:41 Вы кстати зря на Верес накинулись - одно из основных требований к моей программе - портабельность - возможность работать с флешки не обращаясь к компу вообще. Мое виденье ситуации - под виндой проблем как не было, так и нет - да, к проге добавляются Qt-dll - без проблем. А вот под Линуксом вроде как проблемы по этому поводу намечаются. Очень бы хотел, чтоб меня по этому поводу разубедили.
Название: Re: Единый EXE файл Отправлено: kambala от Май 26, 2012, 00:00 не обращаясь к компу вообще ты правда в это веришь? :)Название: Re: Единый EXE файл Отправлено: Alex_C от Май 26, 2012, 00:11 ты правда в это веришь? :) это правда работает)) Да конечно - фраза несколько не правильная. но смысл ясный))) Тут дело конечно на самом деле несколько ... глубже что ли... Программ с возможностью работать от флешки и не оставлять следы на компе - все меньше и меньше. К сожалению такая политика Майкрософт. Название: Re: Единый EXE файл Отправлено: Bepec от Май 28, 2012, 07:15 Накинулись меня разубеждать, но... Зачем? :)
Я же привёл веский (доо), чёткий (угум), ясный(ага) аргумент(именно его). Он не требует подтверждения или опровержения ;) Он весом для меня и многих. И ваше мнение не сделает его им и мне ненужным ;) to Alex Custov: Цитировать Портабельность - (портируемость,переносимость, англ. portability) термин, обозначающий переносимость программного обеспечения. из вики.А одно из свойств портабельности - скорость записи/переноса на съёмные носители ;) Возможно неточен в формулировках, но я не на филолога учусь :) PS ты мне ещё поотрицай, что скорость записи/переноса сотен мелких файлов и одного большого файла (равноценный вес множества и одного файла) различаются ;) Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 28, 2012, 11:45 Это разговор ни о чём, ты придумал какие-то новые определения и размахиваешь ими как флагом.
Цитировать Портабельность - (портируемость,переносимость, англ. portability) термин, обозначающий переносимость программного обеспечения. из вики.А одно из свойств портабельности - скорость записи/переноса на съёмные носители ;) Портабельность - это возможность портировать с или без усилий программу с одной системы на другую, никакого отношения к копированию файлов это не имеет. PS ты мне ещё поотрицай, что скорость записи/переноса сотен мелких файлов и одного большого файла (равноценный вес множества и одного файла) различаются ;) А в случае с динамической сборкой какое это имеет значение? Там 5-10 файлов, включая плагины SQL и кодеки изображений. Ты хочешь экономить время на копировании одного файла вместо пяти, да? Название: Re: Единый EXE файл Отправлено: V1KT0P от Май 28, 2012, 12:05 Портабельность - это возможность портировать с или без усилий программу с одной системы на другую, никакого отношения к копированию файлов это не имеет. Вот с википедии скопипастил:Цитировать Переносимое приложение (англ. portable application, portable app) — программное обеспечение, которое для своего запуска не требует процедуры инсталляции на жесткий диск компьютера, и может полностью храниться на съемных носителях информации, таких как CD-ROM, USB flash drive, флэш-картах и даже на дискете, что позволяет использовать данное ПО на многих компьютерах. Название: Re: Единый EXE файл Отправлено: Bepec от Май 28, 2012, 12:12 Густав - это ты не путай :)
Портирование и Портабельность. Портирование - с одной ОС на другую. Портабельность - запуск без установки, малый размер, возможность запуска со сменных носителей. ;) Название: Re: Единый EXE файл Отправлено: kambala от Май 28, 2012, 16:09 Верес, это ты не путай. То, что ты пытаешься донести, называется переносимостью (предлагаю в словарь англо-русский заглянуть), а портабельность - это возможность совершить портирование.
И про малый размер тоже ты что-то выдумал, как и про скорость копирования. Название: Re: Единый EXE файл Отправлено: Alex Custov от Май 28, 2012, 16:10 Прочитай мой ник внимательнее, я не Густав или Густов.
Ok, я перепутал. С учётом того, что скорость записи практически на все ФС на HDD исчисляется десятками мегабайт, такой проблемы как копирование 10-15 мегабайт просто нет. Название: Re: Единый EXE файл Отправлено: Bepec от Май 28, 2012, 16:39 Камбала, ну убеди меня, что portable (переносимая) не является исходником портабельности.
И про малый размер тоже ты что-то выдумал, как и про скорость копирования. Млиать. Ну почему ты не видишь очевидного...Возми 3000 файлов весом 1 гигабайт. Запиши их на флешку и сравни время. Возми 1 файл весом 1 гигабайт. Запиши его на флешку и сравни время. Время 1 файла будет МЕНЬШЕ. Чем МЕНЬШЕ время переноса, тем приложение БОЛЕЕ портабельное. Как бы ты не хотел, но ПОРТАБЕЛЬНОСТЬ пропорционально зависит от скорости переноса приложения куда-либо. Вот почему БОЛЬШИНСТВО не хочет читать и понимать? Цитировать Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей: Портируемость — как возможность единожды откомпилировав код (обычно в некоторый промежуточный код, который затем интерпретируется или компилируется во время исполнения, «на лету», англ. Just-In-Time[2]), затем запускать его на множестве платформ без каких-либо изменений. Портируемость — как свойство программного обеспечения, описывающее, насколько легко это ПО может быть портировано. По мере развития операционных систем, языков и техники программирования, становится всё проще портировать программы между различными платформами. Одной из изначальных целей создания языка Си и стандартной библиотеки этого языка — была возможность простого портирования программ между несовместимыми аппаратными платформами. Дополнительные преимущества в плане портируемости могут иметь программы, удовлетворяющие специальным стандартам и правилам написания (см., например: Smart Package Manager). Портирование(porting) и Портабельность(portable) - РАЗНЫЕ блин вещи, неверяхи вы такие. Название: Re: Единый EXE файл Отправлено: V1KT0P от Май 28, 2012, 17:17 Портирование(porting) и Портабельность(portable) - РАЗНЫЕ блин вещи, неверяхи вы такие. Это все из-за сленга состоящего из английских слов написанных русскими буквами, что влечет за собой непонимание друг друга.Название: Re: Единый EXE файл Отправлено: kambala от Май 28, 2012, 17:21 я где-то уже писал, что распространять можно в архиве - вот тебе и один файл. а архивирование ещё и размер может уменьшить. или конечные пользователи даже не знают как разархивировать файл?
То, что ты пытаешься донести, называется переносимостью а никак не портабельностью (такого слова-то даже в русском нету).а когда ты обновляешь своё приложение, то заставляешь пользователей качать огромный файл, а при динамической сборке обычно достаточно лишь само приложение выложить - библиотеки скорее всего подойдут и старые. Название: Re: Единый EXE файл Отправлено: Bepec от Май 28, 2012, 17:55 Камбала блин. Тебе говорят о ПОРТАБЕЛЬНОСТИ.. ПЕРЕНОСИМОСТИ.
Вставил флешку => запустил => поработал => скинул на другую флешку => уехал на велосипеде. А не вставил флешку => скачал архиватор => распаковал на флешку(мы же портабельны, нельзя на жёсткий), в это время попил чаю, сходил в ванну и почистил заржавевший велосипед, состарился и закопался. Обновление с использованием своего обновлятора (этого слова тоже нет, но назло буду использовать), конечно будет проблематично, нооо... МЫ ГОВОРИМ О ПОРТАБЕЛЬНОСТИ, а не о "возможности обновления". "Приобретая одно, теряешь другое. Можно спорить бесконечно, но этот закон нарушить нельзя." © Портабельность повышена - ДА. Возможность обновления частями утеряна - ДА. Это не плохо. Это не хорошо. Это - данность. PS Слов kambala / динамика в русском тоже не было. Но они есть хе хе . |