July 11, 2013

Filippe Filippe
Lab Rat
17 posts

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

Page  
1

Saudações Qt Brasil.

Estou numa busca de 2 meses para resolver meu problema mas não achei a solução ainda.

Segue alguns dos recursos que utilizei:

Para recompilar só o win32-g++ utilizei esses recursos:
http://www.qtcentre.org/wiki/index.php?title=Building_static_Qt_on_Windows#MinGW
http://www.qtcentre.org/wiki/index.php?title=Building_static_Qt_on_Windows_with_MinGW#Qt_4.6_and_newer

Para compilar o Qt inteiro utilizei esse recurso:
http://qt-project.org/wiki/Building_Qt_Desktop_for_Windows_with_MinGW

Não encontrei um tutorial que usasse a versão 5.0.2 do Qt, por isso necessito de ajuda.

Alguém conhece um jeito de fazer a “Static build” Qt 5.0.2 MinGW ?

Informação adicional:
S.O. Windows 7

31 replies

July 16, 2013

TioRoy TioRoy
Ant Farmer
281 posts

Você tem todas as dependências [qt.gitorious.org] para o Qt5 instaladas?

Qual erro você está aparecendo?

July 25, 2013

Filippe Filippe
Lab Rat
17 posts

(Desculpa a demora ao responder, estava de férias)
Li o seu link, pelo que entendi estava sem Python e Ruby, vou refazer os testes e já informo assim que terminar.

July 25, 2013

Filippe Filippe
Lab Rat
17 posts

1 – Adicionei a configuração (-static -static-libgcc) na linha ‘QMAKE_LFLAGS = ‘ <QTDIR>\mkspecs\win32-g++\qmake.conf
ficou assim (a linha estava vazia):

  1.  QMAKE_LFLAGS = -static -static-libgcc

2 – depois executei no Qt 5.0.2 for Desktop (MinGW 4.7)

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

  1. >mingw32-make sub-src

Não apareceu nenhum erro no processo.

4 – Criei um programa simples

5 – Adicionei o .pro

  1. CONFIG += static

6 – Compilei com ‘release’.

O Dependency Walker acusa erro no aquivo .exe:

Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

falta desses arquivos:

API-MS-WIN-CORE-COM-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
DCOMP.DLL
GPSVC.DLL

July 29, 2013

TioRoy TioRoy
Ant Farmer
281 posts

Este erro do Dependecy Walker, “Error: Modules with different CPU types were found.” tá estranho.

Se você rodar o programa simples, aparece que erro?

Estranho dar falta de DCOMP.DLL (DirectComposition). Seu Windows 7 é 64bits?

July 29, 2013

Filippe Filippe
Lab Rat
17 posts

Se você rodar o programa simples, aparece que erro?

Esse erro ocorre com o programa que é gerado quando você escolhe a opção

File > New File or Project… > Qt Gui Application

Não modifiquei, apenas criei novo projeto e compilei o código. (É a janela vazia sem menus)

Estranho dar falta de DCOMP.DLL (DirectComposition). Seu Windows 7 é 64bits?

Sim.

July 30, 2013

Rodrigocg Rodrigocg
Ant Farmer
140 posts

Vamos ver isso ai…. vou testar aqui no linux e ver no que da….

July 31, 2013

TioRoy TioRoy
Ant Farmer
281 posts

Filippe,

Mas o erro que vc mostra é do Dependency Walker. Se você executar o programa simples…. o que acontece?

August 1, 2013

Filippe Filippe
Lab Rat
17 posts

Primeiro não apareceu erro nenhum, abriu normalmente (no meu pc).

Depois verifiquei que a path do windows estava apontando para a pasta de bibliotecas do compilador, como o objetivo da compilação estática é compilar as dll dentro do executável, retirei esse direcionamento da path.

Aparece essa mensagem de “Erro do sistema”:

O programa não pode ser iniciado porque está faltando Qt5Core.dll no seu computador. Tente reinstalá-lo para resolver esse problema.

Percebi também que o tamanho do arquivo é de 653KB (ou seja, o programa foi compilado sem as dlls)

Quando estava fazendo a recompilação do “win32-g++” percebi que, nos fóruns, falava-se muito em colocar na instrução “configure” do “Qt 5.0.2 for Desktop (MinGW 4.7)” esse comando -> “-no-exceptions”, porém a instrução não funcionava nele.

August 1, 2013

TioRoy TioRoy
Ant Farmer
281 posts

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.

August 1, 2013

Filippe Filippe
Lab Rat
17 posts

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)

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

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

August 17, 2013

Filippe Filippe
Lab Rat
17 posts

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.

August 18, 2013

TioRoy TioRoy
Ant Farmer
281 posts

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.

August 24, 2013

Filippe Filippe
Lab Rat
17 posts

Não entendi muito bem em qual passo estou errado?

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

August 24, 2013

TioRoy TioRoy
Ant Farmer
281 posts

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

Antes de executar o passo 6, rode:

  1. qmake -v

e depois

  1. qmake -query

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

August 28, 2013

Filippe Filippe
Lab Rat
17 posts

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.

Page  
1

  ‹‹ QUiLoader - QVBoxLayout      Livro/Apostila de Qt ››

You must log in to post a reply. Not a member yet? Register here!