Russian Qt Forum
Ноябрь 23, 2024, 13:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4] 5 6 ... 9   Вниз
  Печать  
Автор Тема: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx  (Прочитано 127863 раз)
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #45 : Ноябрь 22, 2014, 13:19 »

выполните test.bat:
Код:
@echo off
for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C

if "%perl.exe%" == "" (
    echo Perl not found in PATH. Aborting. >&2
    exit /b 1
) else (
    echo %perl.exe%
)
Записан
8Observer8
Гость
« Ответ #46 : Ноябрь 22, 2014, 14:50 »

выполните test.bat:
Код:
@echo off
for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C

if "%perl.exe%" == "" (
    echo Perl not found in PATH. Aborting. >&2
    exit /b 1
) else (
    echo %perl.exe%
)

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #47 : Ноябрь 22, 2014, 15:57 »

рекомендовать зверя к установке — идиотизм
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
« Ответ #48 : Ноябрь 22, 2014, 16:05 »

рекомендовать зверя к установке — идиотизм
Для виртуальки сойдёт. Быстро ставится и не нужно заморачиваться с драйверами. У меня на Win7 почему-то Qt не собирается статически. Что у самого работает, и как сам делал, то и советую
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #49 : Ноябрь 22, 2014, 17:31 »

Почему тогда у меня на голой винде собрался Qt5 без Perl?
Потому что perl там нужен для выгрузки исходников из репозитория. Если исходники загружены самостоятельно, то perl не нужен.
Записан
SigMA
Гость
« Ответ #50 : Ноябрь 24, 2014, 15:52 »

У меня на Win7 почему-то Qt не собирается статически. Что у самого работает, и как сам делал, то и советую

У меня на Win7 собралось
Записан
SigMA
Гость
« Ответ #51 : Ноябрь 24, 2014, 16:29 »

Потому что perl там нужен для выгрузки исходников из репозитория. Если исходники загружены самостоятельно, то perl не нужен.

Похоже, что @xokc прав.
В \qtbase\configure.bat:

Код:
if not exist %QTSRC%\.gitignore goto sconf

Если файла .gitignore нет, а его действительно нет (исходники или получены при установке Qt или загружены и распакованы отдельно), то код с использованием perl пропускается:

Код:
if "%perl.exe%" == "" (
    echo Perl not found in PATH. Aborting. >&2
    exit /b 1
)
if not exist mkspecs (
    md mkspecs
    if errorlevel 1 goto exit
)
perl %QTSRC%bin\syncqt.pl -minimal -module QtCore -outdir %QTDIR% %QTSRC%

Правда я так и не понял, что конкретно  выполняет скрипт syncqt.pl. Не нашёл там ничего похожего на скачивание из репозитория.
Записан
SigMA
Гость
« Ответ #52 : Ноябрь 26, 2014, 13:43 »

Резюме по поводу необходимости инструментов perl, ruby и python.
1. Perl по всей видимости нужен, если нет заранее подготовленных исходников. Что в этом случае происходит - не пробовал. Возможно, как было указано выше, происходит доставка исходников из репозитория и их подготовка. В этом случае без Perl сборка в принципе не возможна.

2. Все три инструмента нужны для сборки WebKit. Если они не доступны выдаётся следующее предупреждение во время сборки:
Код:
cd qtwebkit\ && ( if not exist Makefile D:\Qt\5.3.2\5.3static\src\qtbase\bin\qmake D:\Qt\5.3.2\5.3static\src\qtwebkit\WebKit.pro -o Makefile ) && mingw32-make -f Makefile 
Info: creating cache file D:\Qt\5.3.2\5.3static\src\qtwebkit\.qmake.cache
"perl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
<...>
The WebKit build was disabled for the following reasons:
    * ICU is required. To build QtWebKit with Qt 5 you need to build Qt 5 with libICU support. Check for ICU support being mentioned in qtbase/config.summary.
    * QtWebKit cannot be built as a static library on this platform. Check your configuration in qtbase/config.summary.
    * Missing gperf from PATH
    * Missing perl from PATH
    * Missing bison from PATH
    * Missing ruby from PATH
    * Missing flex from PATH
« Последнее редактирование: Ноябрь 26, 2014, 13:45 от SigMA » Записан
SigMA
Гость
« Ответ #53 : Ноябрь 26, 2014, 14:03 »

Рекомендации по сборке в дополнение к исходной инструкции.

Команды лучше запускать не непосредственно в консольном окне, а через командные пакетные файлы с перенаправлением вывода сообщений и ошибок в лог файл. В этом случае гораздо проще анализировать результаты выполнения команд.
Можно все команды объединить в один пакетный файл, а можно каждую выполнять в отдельном пакетном файле. Я делал вторым способом, чтобы можно было анализировать результат каждого процесса по мере завершения.

Пример командного файла:
Код:
cmd /c "configure.bat -static -release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests" > %QtDir%\conf.log   2>&1
В данном случае выполняется конфигурирование с выводом результатов и ошибок в файл conf.log.
Записан
8Observer8
Гость
« Ответ #54 : Декабрь 18, 2014, 16:25 »

Переправил инструкцию под Qt 5.4
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #55 : Декабрь 18, 2014, 16:39 »

У вас сейчас получаются полностью независимые программы по этой инструкции?
Записан
8Observer8
Гость
« Ответ #56 : Декабрь 18, 2014, 17:20 »

У вас сейчас получаются полностью независимые программы по этой инструкции?
Да, только рядом с exe должны быть эти библиотеки:
- libgcc_s_dw2-1.dll - 118 KB
- libstdc++-6.dll - 1,003 KB
- libwinpthread-1.dll - 48 КБ

Не совсеми модулями прокатывает. К примеру, если программа использует COM-порт, то уже не собирётся. При переключении на статический Release Qt Creator выдаст следующее:
Цитировать
Project ERROR: Unknown module(s) in QT: serialport

И ещё отмечу, что после статической сборки простейшего приложения с диалоговым окном, оно будет весить ~15 МБайт. Зато после сжатия его с помощью upx - будет весить ~5.5 MБайт

По GPL с приложением нужно поставлять и его исходники. Например:

MyApp:
- bin
-- Linux
-- Windows
- src
Записан
8Observer8
Гость
« Ответ #57 : Декабрь 18, 2014, 17:23 »

Если кто встречал хорошую инструкцию для статической сборки под Linux Mint или Ubuntu, то дайте, пожалуйста, ссылку
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #58 : Декабрь 18, 2014, 17:31 »

Не понимаю смысла в статической сборке. Тем более, под Линухом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #59 : Декабрь 18, 2014, 17:37 »

Не понимаю смысла в статической сборке. Тем более, под Линухом.

и в сжатии тоже. Возможно в каких-то исключительных случаях - да, но в общем - нет. Сжатое приложение стартует заметно медленнее, особенно если оно большое. Не думаю, что 10 Мб важнее скорости запуска.
Записан
Страниц: 1 2 3 [4] 5 6 ... 9   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.