From 10:00 CET Friday 22nd November we will adjust how the server works to deal with some recently reported problems. Therefore there may be a load problem, if you experience more problems than usual trying to access the forum then please PM AndyS or any of the moderators so they can inform me.


Compilação Estática (Static build) Qt 5.0.2 MinGW



  • Bom, pelo erro e pelo tamanho do exe, não compilou estático como você mesmo viu.

    Você consegue ver se no diretório do Qt que você compilou estático tem DLL's?
    Quem colocou o Qt5 no PATH? Você tem o Qt5 (shared) instalado também?

    Aqui em casa uso Linux.... mas no trabalho uso Windows 7 64bits.
    Vou tentar reproduzir lá amanhã.

    Mas quando você tem várias versões de Qt instaladas, acho melhor usar o QtCreator, que fica mais fácil de selecionar qual versão você quer usar.



  • 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\bin

    bq. 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 é.



  • Eu disse algo errado?
    Ainda preciso de ajuda, pois meu problema não está resolvido.

    Caso alguém já tenha feito funcionar o "Qt 5.0.2 MinGW" no "windows 7 64bits", preciso de ajuda.



  • Quando disse "Qt5 (Shared)" e pelo erro "está faltando Qt5Core.dll ", você tem as dll's Qt5 .

    Quando você compila o Qt, você precisa rodar o qmake que você compilou primeiro, e depois o mingw32-make.



  • 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’.



  • No passo 6, você executa o qmake e depois o mingw32-make, certo?

    Antes de executar o passo 6, rode:

    @
    qmake -v
    @

    e depois

    @
    qmake -query
    @

    Assim vamos ter certeza que você está usando o Qt que você compilou.



  • Não, o passo 6 eu já estou com a compilação pronta e estou usando o Qt para compilar um programa teste.
    Acho que você quis dizer o passo 3, vou tentar com ele e dou o retorno.



  • 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@



  • Não funcionou.



  • 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.



  • Ok, vou tentar compilar o Qt completo.

    Você sabe de algum tutorial que ensina a compilar o Qt 5.0.2 completo?



  • 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.



  • Ok, vou seguir esse tutorial e respondo assim que tiver uma dúvida ou se tiver conseguido concluir.
    Obrigado.



  • 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 1

    Existe, 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
    make

    Só 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
    make

    Só 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?



  • [quote author="josuegomes" date="1380024758"]Agora eu vi que você está usando o MinGW-64. Como você está chamando o Configure? Qual a saída desse comando?
    [/quote]

    Para esse passo estou utilizando:
    Comando:

    @$ ./Configure --prefix=$PWD/dist no-idea no-mdc2 no-rc5 shared mingw64@

    Saída:

    @[...]
    Since you've disabled or enabled at least one algorithm, you need to do
    the following before building:

        make depend
    

    Configured for mingw64.@

    Comando:

    @$ make depend && make && make install@

    Saída:

    @[...]
    make[2]: Entering directory /home/filippe/openssl-1.0.1e' [ -z "" ] || gcc -D_WINDLL -DOPENSSL_PIC -DOPENSSL_THREADS -D_MT -DDSO_WIN32 -DL _ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM - DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL _ASM -DGHASH_ASM -Iinclude \ -DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso.exe \ fips_premain.c fipscanister.o \ libcrypto.a -lws2_32 -lgdi32 -lcrypt32 make[3]: Entering directory/home/filippe/openssl-1.0.1e'
    make[4]: Entering directory /home/filippe/openssl-1.0.1e' libcrypto.a(bn_gf2m.o):bn_gf2m.c:(.text+0x8db): undefined reference tobn_GF2m_
    mul_2x2'
    collect2.exe: error: ld 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: *** [build_crypto] Error 1@



  • Resolvi o problema que eu citei acima. (Meu sistema não estava num bom estado) Estou compilando no PC do meu irmão.

    Porém cheguei numa etapa que não está dando certo.
    A etapa é a número 11 do tutorial que você me passou (http://silmor.de/qtstuff.qt5mingw.php)

    utilizei esse comando para contruir:

    @configure -opensource -prefix F:\QT\mingw\mingw64 -nomake examples -nomake demos -nomake tests -platform win32-g++ -opengl desktop -openssl -I f:\QT\Tools\openssl-1.0.1e\dist\include\openssl -L f:\QT\Tools\openssl-1.0.1e\dist\lib -icu -I f:\QT\Tools\icu\dist\include -L f:\QT\Tools\icu\dist\lib@

    deu esse erro:

    @‘F:\QT\Qt510\qtbase\configure.exe’ não é reconhecido como um comando interno
    ou externo, um programa operável ou um arquivo em lotes.,@

    Como você recomenda neste artigo (http://qt-project.org/forums/viewthread/23171), criei um arquivo vazio dentro de "qtbase" chamado ".gitignore"

    Então deu esse erro:

    @<builtin>: recipe for target 'qfilesystemengine_win.o' failed
    mingw32-make: *** [qfilesystemengine_win.o] Error 1@

    Não estou utilizando o "jom" nem o "fart" para fazer essa operação, talvez seja isso, mas queria ter certeza que não é outra coisa para utilizá-los.

    [editado 9 horas depois]

    Obs: não fiz o passo 6 do tutorial, baixei o arquivo, ".tar.gz", pelo site do Qt.


Log in to reply