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

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

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

Сообщений: 2063


Просмотр профиля
« Ответ #30 : Сентябрь 30, 2014, 11:38 »

Я не смог поставить PowerShell на Win7:

PowerShell уже есть в виндах начиная с Windows 7.
Записан
8Observer8
Гость
« Ответ #31 : Сентябрь 30, 2014, 14:18 »

Я не смог поставить PowerShell на Win7:
PowerShell уже есть в виндах начиная с Windows 7.
Спасибо за информацию! Надо будет попробовать

Сейчас такая ситуация. Я собрал статически Qt. Собрал статически приложение MainWindow. Перехожу в папку release. Запускаю приложение. Требуются dll:
- libgcc_s_dw2-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll

Когда их добавляю в папку - запускается нормально.

Я перед конфигурированием заходил в папку "C:\Qt\Qt5.3.2\5.3\mingw482_32\mkspecs\win32-g++". Открывал файл "qmake.conf" и после знака "=" написал:
Цитировать
QMAKE_LFLAGS = -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

Я не знаю, что за ключи идут после -static, но так чаще всего на форумах пишут.

Потом запустил консоль Qt. Перешёл в папку: cd C:\Qt\Qt5.3.2\5.3\Src\

Ввёл команду:
Код:
configure -static -platform win32-g++ -prefix "C:\Qt\Qt5.3.2_Static" -release -opensource -confirm-license -c++11 -nomake examples -nomake tests -opengl desktop -no-angle -no-vcproj -qt-sql-sqlite

Через минут 5 ввёл команду: mingw32-make

Через, примерно, 1.5 часа - эту команду: mingw32-make install

Потом зарегистрировал в Qt. Почему же эти три библиотеки не подцепились? Меня смущает эта строка:
Код:
QMAKE_LFLAGS_DLL        = -shared

Может её надо было тоже изменить на -static?

Код:
#
# qmake configuration for win32-g++
#
# Written for MinGW / gcc 4.6 or higher
#
# Cross compile example for i686-w64-mingw32-g++:
#   configure -xplatform win32-g++ -device-option CROSS_COMPILE=i686-w64-mingw32-
#

load(device_config)

MAKEFILE_GENERATOR      = MINGW
QMAKE_PLATFORM          = win32 mingw
CONFIG                 += debug_and_release debug_and_release_target precompile_header
DEFINES                += UNICODE
QMAKE_COMPILER_DEFINES += __GNUC__ WIN32

QMAKE_EXT_OBJ           = .o
QMAKE_EXT_RES           = _res.o

QMAKE_COMPILER          = gcc

QMAKE_CC                = $${CROSS_COMPILE}gcc
QMAKE_LEX               = flex
QMAKE_LEXFLAGS          =
QMAKE_YACC              = byacc
QMAKE_YACCFLAGS         = -d
QMAKE_CFLAGS            = -pipe -fno-keep-inline-dllexport
QMAKE_CFLAGS_DEPS       = -M
QMAKE_CFLAGS_WARN_ON    = -Wall -Wextra
QMAKE_CFLAGS_WARN_OFF   = -w
QMAKE_CFLAGS_RELEASE    = -O2
QMAKE_CFLAGS_DEBUG      = -g
QMAKE_CFLAGS_YACC       = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
QMAKE_CFLAGS_SSE2       = -msse2 -mstackrealign
QMAKE_CFLAGS_SSE3       = -msse3
QMAKE_CFLAGS_SSSE3      = -mssse3
QMAKE_CFLAGS_SSE4_1     = -msse4.1
QMAKE_CFLAGS_SSE4_2     = -msse4.2
QMAKE_CFLAGS_AVX        = -mavx
QMAKE_CFLAGS_AVX2       = -mavx2
QMAKE_CFLAGS_IWMMXT     = -mcpu=iwmmxt
QMAKE_CFLAGS_NEON       = -mfpu=neon

QMAKE_CXX               = $${CROSS_COMPILE}g++
QMAKE_CXXFLAGS          = $$QMAKE_CFLAGS
QMAKE_CXXFLAGS_DEPS     = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON  = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE  = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG    = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC     = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD   = $$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_RTTI_ON  = -frtti
QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
QMAKE_CXXFLAGS_CXX11    = -std=c++0x
QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS

QMAKE_INCDIR            =

QMAKE_RUN_CC            = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CC_IMP        = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
QMAKE_RUN_CXX           = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CXX_IMP       = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

QMAKE_LINK              = $${CROSS_COMPILE}g++
QMAKE_LINK_C            = $${CROSS_COMPILE}gcc
QMAKE_LFLAGS            = -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
QMAKE_LFLAGS_EXCEPTIONS_OFF =
QMAKE_LFLAGS_RELEASE    = -Wl,-s
QMAKE_LFLAGS_DEBUG      =
QMAKE_LFLAGS_CONSOLE    = -Wl,-subsystem,console
QMAKE_LFLAGS_WINDOWS    = -Wl,-subsystem,windows
QMAKE_LFLAGS_DLL        = -shared
QMAKE_LFLAGS_CXX11      =
QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections
QMAKE_LINK_OBJECT_MAX   = 10
QMAKE_LINK_OBJECT_SCRIPT = object_script
QMAKE_PREFIX_STATICLIB  = lib
QMAKE_EXTENSION_STATICLIB = a

QMAKE_LIBS              =
QMAKE_LIBS_CORE         = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
QMAKE_LIBS_GUI          = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32
QMAKE_LIBS_NETWORK      = -lws2_32
QMAKE_LIBS_OPENGL       = -lglu32 -lopengl32 -lgdi32 -luser32
QMAKE_LIBS_OPENGL_ES2   = -llibEGL -llibGLESv2 -lgdi32 -luser32
QMAKE_LIBS_OPENGL_ES2_DEBUG = -llibEGLd -llibGLESv2d -lgdi32 -luser32
QMAKE_LIBS_COMPAT       = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
QMAKE_LIBS_QT_ENTRY     = -lmingw32 -lqtmain

!isEmpty(QMAKE_SH) {
    MINGW_IN_SHELL      = 1
    QMAKE_DIR_SEP       = /
    QMAKE_DIRLIST_SEP   = :
    include(../common/shell-unix.conf)
    # Because install's ability to set permissions is not relevant on Windows,
    # and git's msys does not provide it to start with.
    QMAKE_INSTALL_FILE    = cp -f
    QMAKE_INSTALL_PROGRAM = cp -f
} else {
    include(../common/shell-win32.conf)
}

QMAKE_IDL               = midl
QMAKE_LIB               = $${CROSS_COMPILE}ar -ru
QMAKE_RC                = $${CROSS_COMPILE}windres

QMAKE_STRIP             = $${CROSS_COMPILE}strip
QMAKE_STRIPFLAGS_LIB   += --strip-unneeded
QMAKE_OBJCOPY           = $${CROSS_COMPILE}objcopy
QMAKE_NM                = $${CROSS_COMPILE}nm -P
load(qt_config)
« Последнее редактирование: Сентябрь 30, 2014, 14:39 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #32 : Сентябрь 30, 2014, 16:23 »

Цитировать
Сейчас такая ситуация. Я собрал статически Qt. Собрал статически приложение MainWindow. Перехожу в папку release. Запускаю приложение. Требуются dll:
- libgcc_s_dw2-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll

Когда их добавляю в папку - запускается нормально.

Я перед конфигурированием заходил в папку "C:\Qt\Qt5.3.2\5.3\mingw482_32\mkspecs\win32-g++". Открывал файл "qmake.conf" и после знака "=" написал:
Цитировать
QMAKE_LFLAGS = -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
У меня есть такое предположение, что надо было написать вот так: +=
Записан
8Observer8
Гость
« Ответ #33 : Октябрь 01, 2014, 10:54 »

Всё по-прежнему, то есть требует: libgcc_s_dw2-1.dll, libstdc++-6.dll, libwinpthread-1.dll

Удовлетворён и этим результатам, так как с помощью программы Upx сжал exe с диалогом с 13 MB к 5 MB. Плюс ещё эти dll надо у exe положить:
- libgcc_s_dw2-1.dll - 117 KB
- libstdc++-6.dll - 970 KB
- libwinpthread-1.dll - 640

P.S. Переписал инструкцию. Убрал всё лишнее.
Записан
8Observer8
Гость
« Ответ #34 : Ноябрь 14, 2014, 12:40 »

Изменил название и написал, как сжать полученный exe (простое окно с кнопкой) c 14 МБайт до 5 МБайт с помощью программы upx
Записан
SigMA
Гость
« Ответ #35 : Ноябрь 17, 2014, 13:45 »

Скажите пожалуйста, требуются или нет для статической сборки Qt 5.3.2 perl, ruby и python. А то в каких-то инструкциях пишут, что нужны, а в других об этом ничего не говорится.
Записан
8Observer8
Гость
« Ответ #36 : Ноябрь 17, 2014, 16:58 »

Без этого можно обойтись. Рекомендую поставить "Virtual Box", в нём Windows (у меня XP на виртуалке), а туда уже Qt с исходниками. Потом выполняйте инструкцию на виртуальной машине. Когда вам потребуется отправить другу свой exe-файл, то вы запустите "Virtual Box" -> "Windows XP" -> "Qt Creator" -> откроете проект (предварительно нужно расшарить диск через меню "Virtual Box") -> компилируете ваш проект со статической сборкой -> сжимаете ваш exe (c ~15 МБайт) с помощью upx (в ~5МБайт) -> помещаете в архив zip -> сам архив на Yandex.Disk -> правой кнопкой мыши по архиву -> выбираете "скопировать ссылку" -> отправляете другу
Записан
8Observer8
Гость
« Ответ #37 : Ноябрь 17, 2014, 17:07 »

Другу можно вот такое сообщение отправить:

Зацени новую версию змейки: https://yadi.sk/d/8jDtj7EucidNE

Хочу в 3D сделать, как здесь: https://yadi.sk/d/TX4qJ1TzcidhP

P.S. Исходники: https://github.com/8Observer8/SnakeIn10Minutes
Делал, как здесь: http://www.youtube.com/watch?v=GiZGEFBGgKU
Записан
SigMA
Гость
« Ответ #38 : Ноябрь 19, 2014, 09:26 »

Странно. Сейчас нашёл инструкцию по сборке Qt for Windows - Building from Source | QtDoc 5.3 на qt-project.org (http://qt-project.org/doc/qt-5/windows-building.html). Там идёт ссылка на Qt for Windows - Requirements (
http://qt-project.org/doc/qt-5/windows-requirements.html)

Так вот там тоже говорится, требуются эти инструменты:

Building from Source

These tools are not needed to run Qt 5 applications, but they are required for building Qt 5 from source.

    ActivePerl - Install a recent version of ActivePerl (download page) and add the installation location to your PATH.
    Python - Install Python from the here and add the installation location to your PATH in order to be able to build Qt WebKit.
    Install Ruby from here and add the installation location to your PATH in order to be able to build Qt WebKit.

Причём, если Python и Ruby нужны только для WebKit, то Perl  судя по всему, требуется для всего остального.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


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

Скажите пожалуйста, требуются или нет для статической сборки Qt 5.3.2 perl, ruby и python. А то в каких-то инструкциях пишут, что нужны, а в других об этом ничего не говорится.

Требуются. После сборки Qt их можно удалить.
Записан
8Observer8
Гость
« Ответ #40 : Ноябрь 21, 2014, 09:55 »

Причём, если Python и Ruby нужны только для WebKit, то Perl  судя по всему, требуется для всего остального.
Ну вот смотрите. Я на виртуалку поставил Zver XP. Поставил Qt. Выполнил свою инструкцию. Qt собирает приложения статически. С WebKit ещё не пробовал собирать, он мне пока не нужен. Не знаю причём тут Python, Ruby и Perl
Записан
SigMA
Гость
« Ответ #41 : Ноябрь 21, 2014, 11:29 »

Цитировать
Ну вот смотрите. Я на виртуалку поставил Zver XP. Поставил Qt. Выполнил свою инструкцию. Qt собирает приложения статически. С WebKit ещё не пробовал собирать, он мне пока не нужен. Не знаю причём тут Python, Ruby и Perl

Вот и я пока не понимаю. WebKit тоже пока не интересует. Т.е. Python и Ruby не нужны. А вот на Perl в каком-то конфигурационном файле натыкался. Там проверка есть - установлен или нет.
Надо будет попробовать с этими утилитами собрать и посмотреть в чём будет различие.

« Последнее редактирование: Ноябрь 21, 2014, 13:04 от SigMA » Записан
8Observer8
Гость
« Ответ #42 : Ноябрь 22, 2014, 11:45 »

Да давно бы уже поставили Vitual Box, Zver XP на виртуалку, Qt, попробовали бы инструкцию, а потом может написали бы "ругнулся, что Perl нужен". А так это вилами по воде. У меня же собралось на чистой винде (врядли Zver ставит Perl)
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


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

Да давно бы уже поставили Vitual Box, Zver XP на виртуалку, Qt, попробовали бы инструкцию, а потом может написали бы "ругнулся, что Perl нужен". А так это вилами по воде. У меня же собралось на чистой винде (врядли Zver ставит Perl)

qt 4 perl не требует
qt 5 в qt5\qtbase\configure.bat в первых же строках видно:
Код:
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
)
Записан
8Observer8
Гость
« Ответ #44 : Ноябрь 22, 2014, 12:55 »

Почему тогда у меня на голой винде собрался Qt5 без Perl?
Записан
Страниц: 1 2 [3] 4 5 ... 9   Вверх
  Печать  
 
Перейти в:  


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