Compilação Estática (Static build) Qt 5.0.2 MinGW
-
bq. Você consegue ver se no diretório do Qt que você compilou estático tem DLL’s?
Não entendi muito bem a pergunta, mas para tentar esclarecer eu instalei o Qt no meu PC com esse executável:
"qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe"Depois tentei fazer a compilação estática através do "Qt 5.0.2 for Desktop (MinGW 4.7)" (com os passos citados no dia 25 de julho)
bq. Quem colocou o Qt5 no PATH?
Fui eu, pois em alguns artigos diziam que o "Qt 5.0.2 for Desktop (MinGW 4.7)" precisava ter sua biblioteca no PATH para funcionar:
...qt\5.0.2\mingw47_32\binbq. Você tem o Qt5 (shared) instalado também?
Como já deve ter notado, não conheço muita coisa do Qt. Esse "Qt5 (shared)" não sei se tenho instalado, pois não sei o que é.
-
Não entendi muito bem em qual passo estou errado?
bq. 1 – Adicionei a configuração (-static -static-libgcc) na linha ‘QMAKE_LFLAGS = ‘ <QTDIR>\mkspecs\win32-g++\qmake.conf
2 – depois executei no Qt 5.0.2 for Desktop (MinGW 4.7)configure -platform win32-g++ -static -release -nomake examples -nomake demos -no-vcproj -no-cetest -qt-sql-mysql -plugin-sql-mysql -no-opengl -no-openvg -no-incredibuild-xge
3 – prossegui com
mingw32-make sub-src
Não apareceu nenhum erro no processo.
4 – Criei um programa simples
5 – Adicionei o .pro
CONFIG += static
6 – Compilei com ‘release’. -
Antes do passo 3:
@
D:\qt\5.0.2\Src\qtbase>qmake -v
QMake version 3.0
Using Qt version 5.0.2 in D:\qt\5.0.2\mingw47_32\lib@@D:\qt\5.0.2\Src\qtbase>qmake -query
QT_SYSROOT:
QT_INSTALL_PREFIX:D:\qt\5.0.2\mingw47_32
QT_INSTALL_ARCHDATA:D:\qt\5.0.2\mingw47_32
QT_INSTALL_DATA:D:\qt\5.0.2\mingw47_32
QT_INSTALL_DOCS:D:\qt\5.0.2\mingw47_32\doc
QT_INSTALL_HEADERS:D:\qt\5.0.2\mingw47_32\include
QT_INSTALL_LIBS:D:\qt\5.0.2\mingw47_32\lib
QT_INSTALL_LIBEXECS:D:\qt\5.0.2\mingw47_32\libexec
QT_INSTALL_BINS:D:\qt\5.0.2\mingw47_32\bin
QT_INSTALL_TESTS:D:\qt\5.0.2\mingw47_32\tests
QT_INSTALL_PLUGINS:D:\qt\5.0.2\mingw47_32\plugins
QT_INSTALL_IMPORTS:D:\qt\5.0.2\mingw47_32\imports
QT_INSTALL_QML:D:\qt\5.0.2\mingw47_32\qml
QT_INSTALL_TRANSLATIONS:D:\qt\5.0.2\mingw47_32\translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:D:\qt\5.0.2\mingw47_32\examples
QT_INSTALL_DEMOS:D:\qt\5.0.2\mingw47_32\examples
QT_HOST_PREFIX:D:\qt\5.0.2\mingw47_32
QT_HOST_DATA:D:\qt\5.0.2\mingw47_32
QT_HOST_BINS:D:\qt\5.0.2\mingw47_32\bin
QMAKE_SPEC:win32-g++
QMAKE_XSPEC:win32-g++
QMAKE_VERSION:3.0
QT_VERSION:5.0.2@Depois do passo 3:
@D:\qt\5.0.2\Src\qtbase>qmake -v
QMake version 3.0
Using Qt version 5.0.2 in D:\qt\5.0.2\mingw47_32\lib@@D:\qt\5.0.2\Src\qtbase>qmake -query
QT_SYSROOT:
QT_INSTALL_PREFIX:D:\qt\5.0.2\mingw47_32
QT_INSTALL_ARCHDATA:D:\qt\5.0.2\mingw47_32
QT_INSTALL_DATA:D:\qt\5.0.2\mingw47_32
QT_INSTALL_DOCS:D:\qt\5.0.2\mingw47_32\doc
QT_INSTALL_HEADERS:D:\qt\5.0.2\mingw47_32\include
QT_INSTALL_LIBS:D:\qt\5.0.2\mingw47_32\lib
QT_INSTALL_LIBEXECS:D:\qt\5.0.2\mingw47_32\libexec
QT_INSTALL_BINS:D:\qt\5.0.2\mingw47_32\bin
QT_INSTALL_TESTS:D:\qt\5.0.2\mingw47_32\tests
QT_INSTALL_PLUGINS:D:\qt\5.0.2\mingw47_32\plugins
QT_INSTALL_IMPORTS:D:\qt\5.0.2\mingw47_32\imports
QT_INSTALL_QML:D:\qt\5.0.2\mingw47_32\qml
QT_INSTALL_TRANSLATIONS:D:\qt\5.0.2\mingw47_32\translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:D:\qt\5.0.2\mingw47_32\examples
QT_INSTALL_DEMOS:D:\qt\5.0.2\mingw47_32\examples
QT_HOST_PREFIX:D:\qt\5.0.2\mingw47_32
QT_HOST_DATA:D:\qt\5.0.2\mingw47_32
QT_HOST_BINS:D:\qt\5.0.2\mingw47_32\bin
QMAKE_SPEC:win32-g++
QMAKE_XSPEC:win32-g++
QMAKE_VERSION:3.0
QT_VERSION:5.0.2@ -
bq. mas para tentar esclarecer eu instalei o Qt no meu PC com esse executável:
“qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe”Estes pacotes não têm as bibliotecas estáticas. Você teria que compilar a Qt toda a partir do código fonte e gerar as suas próprias bibliotecas estáticas.
-
Acho que não existe um tutorial perfeito. Eu consegui compilar juntando informações aqui e ali e fazendo muitas tentativas.
Um bom começo é este tutorial:http://silmor.de/qtstuff.qt5mingw.php
Se tiver alguma dúvida poste aqui.
-
Comecei a entender o processo.
Já construí o ICU, porém na hora de usar o MSYS para construir o openssl-1.0.1e:
@$ make depend && make && make install@
dá esse erro:
bq. libcrypto.a(bn_gf2m.o):bn_gf2m.c:(.text+0x8db): undefined reference to 'bn_GF2m_mul_2x2'
collect2.exe: error: Id returned 1 exit status
make[4]: *** [link_a.cygwin] Error 1
make[4]: Leaving directory '/home/filippe/openssl-1.0.1e'
make[3]: *** [do_cygwin-shared] Error 2
make[3]: Leaving directory '/home/filippe/openssl-1.0.1e'
make[2]: *** [libcrypto.dll.a] Error 2
make[2]: Leaving directory '/home/filippe/openssl-1.0.1e'
make[1]: *** [shared] Error 2
make[1]: Leaving directory '/home/filippe/openssl-1.0.1e/crypto'
make[4]: *** [build_crypto] Error 1Existe, para outro tipo de erro, uma recomendação dada:
bq. Use MSYS perl
or change crypto/perlasm/x86_64-xlate.pl as mentioned in the e-mail thread.Mas não entendi como usar o "MSYS perl", pois já tenho a localização da pasta do perl no meu PATH do Windows.
Existem uma forma de resolver esse problema?
Obs: Estou fazendo essa parte: http://qt-project.org/wiki/Compiling-OpenSSL-with-MinGW
-
No prompt do MSYS execute:
perl -V
e coloque o resultado aqui
-
A maneira como eu compilo o OpenSSL no prompt do MSYS:
./Configure mingw
makeSó isso é suficiente.
-
Boa tarde.
A partir de hoje de manhã meu computador começou a apresentar o seguinte erro:
bq. "O programa não pode ser iniciado porque está faltando qt5core.dll no seu computador. Tente reinstalá-lo para resolver esse problema."
Através das buscas, achei esse fórum e gostaria de saber como posso solucionar isso.
Obrigada. -
[quote author="tamireswirth" date="1379967831"]Boa tarde.
A partir de hoje de manhã meu computador começou a apresentar o seguinte erro:
bq. "O programa não pode ser iniciado porque está faltando qt5core.dll no seu computador. Tente reinstalá-lo para resolver esse problema."
Através das buscas, achei esse fórum e gostaria de saber como posso solucionar isso.
Obrigada.[/quote]Tamires,
Este fórum é para desenvolvedores que usam a biblioteca Qt. O seu problema é outro. Entre em contato com o fabricante do programa que você está tentando iniciar e peça ajuda.
-
[quote author="josuegomes" date="1379965936"]No prompt do MSYS execute:
perl -V
e coloque o resultado aqui
[/quote]Como você pediu, aí está o resultado:
@$ perl -V
Set up gcc environment - gcc.exe (rev5, Built by MinGW-W64 project) 4.8.1
Summary of my perl5 (revision 5 version 16 subversion 3) configuration:Platform:
osname=MSWin32, osvers=5.2, archname=MSWin32-x64-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='d:\QtStatic\MINGW-~1\X64-48~1.1-W\mingw64\bin\gcc.exe', ccflags ='-DNDEB
UG -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS
-DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D
HASATTRIBUTE -fno-strict-aliasing -mms-bitfields',
optimize='-O2',
cppflags='-DWIN32'
ccversion='', gccversion='gcc.exe (rev5, Built by MinGW-W64 project) 4.8.1',
gccosandvers=''
intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, Off_t='__int64', lsee
ksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='d:\QtStatic\MINGW-~1\X64-48~1.1-W\mingw64\bin\g++.exe', ldflags ='-L"D:
QtStatic\Perl64\lib\CORE"'
libpth=\lib
libs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32
-lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -
lodbccp32 -lcomctl32 -lmsvcrt
perllibs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshel
l32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc
32 -lodbccp32 -lcomctl32 -lmsvcrt
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl516.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-mdll -L"D:\QtStatic\Perl64\lib\CORE"'Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY
PERLIO_LAYERS PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC
USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1603 [296746]
Built under MSWin32
Compiled at Mar 13 2013 13:31:10
@INC:
d:/QtStatic/Tools/Perl64/site/lib
d:/QtStatic/Tools/Perl64/lib@ -
[quote author="josuegomes" date="1379966076"]A maneira como eu compilo o OpenSSL no prompt do MSYS:
./Configure mingw
makeSó isso é suficiente.[/quote]
Fiz com esse procedimentos que você falou. O resultado foi esse:
@$ make
making all in crypto...
make[1]: Entering directory/home/filippe/openssl-1.0.1e/crypto' ( echo "#ifndef MK1MF_BUILD"; \ echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c * \ echo ' #define CFLAGS "gcc -DOPENSSL_THREADS -D_MT -DDSO_WIN32 -DL_ AN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall -DOPENSS _ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_G -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAE M -DWHIRLPOOL_ASM -DGHASH_ASM"'; \ echo ' #define PLATFORM "mingw"'; \ echo " #define DATE \"
LC_ALL=C LC_TIME=C date\""; \ echo '#endif' ) >buildinf.h gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -D 2_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall -DOPENSSL_BN_ASM_ _WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA M -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DW POOL_ASM -DGHASH_ASM -c -o cryptlib.o cryptlib.c cryptlib.c:1:0: error: CPU you selected does not support x86-64 instruction /* crypto/cryptlib.c */ ^ cryptlib.c:1:0: error: CPU you selected does not support x86-64 instruction make[1]: *** [cryptlib.o] Error 1 make[1]: Leaving directory
/home/filippe/openssl-1.0.1e/crypto'
make: *** [build_crypto] Error 1@ -
Agora eu vi que você está usando o MinGW-64. Como você está chamando o Configure? Qual a saída desse comando?