Como gerar um executável (.exe) a partir do Linux ?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Vlademiro »

Pessoal,

Alguém sabe como faço para gerar um arquivo executável do Windows a partir do Linux ?

Lá no site do harbour diz que o harbour faz cross-compiler, mas eu não estou conseguindo fazer. Consegui gerar um executável do windows usando o gcc somente.

Algo como

1. apt install mingw-w64
2. x86_64-w64-mingw32-gcc -o hello_world.exe hello_world.c

Mas no Harbour não consigo

Já alterei variáveis de ambiente, mas o valor para o compilador que coloco HB_COMPILER não é aceito. A única documentação que achei foi a do Harbour mas não ajuda muito e uma postagem do Itamar no fórum internacional, mas eles não souberam responder.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Tem como, cheguei perto!!!
Precisa das libs do Harbour para windows compiladas ai no Linux.(suponho)

Tem umas postagens minha lá no harbour user google groups
Ficou nesse -mconsole, nem sei se foi corrigido. Pra mim é erro do hbkm2.

Código: Selecionar todos

sudo make HB_PLATFORM=win HB_COMPILER=mingw64 HB_INSTALL_PREFIX=/home/itamar/dev/hb3 install
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
hbmk2 hwgui.hbp -comp=mingw64 -plat=win
Tetando compilar hwgui no linux para win...

Código: Selecionar todos

tamar@itamar-desktop:~/dev/hwgui$ hbmk2 hwgui.hbp -comp=mingw64 -plat=win
Harbour 3.2.0dev (r2403071241)
Copyright (c) 1999-2021, https://harbour.github.io/
In file included from /usr/local/include/harbour/windows.h:9,
                 from ../../home/itamar/dev/hwgui/include/hwingui.h:19,
                 from source/winapi/barcode.prg:913:
/usr/local/include/harbour/_mingw.h:272:2: error: #error Only Win32 target is supported!
  272 | #error Only Win32 target is supported!
      |  ^~~~~
In file included from /usr/local/include/harbour/vadefs.h:9,
                 from /usr/local/include/harbour/_mingw.h:283:
/usr/local/include/harbour/_mingw.h:609:10: fatal error: sdks/_mingw_ddk.h: Arquivo ou diretório inexistente
  609 | #include "sdks/_mingw_ddk.h"
      |          ^~~~~~~~~~~~~~~~~~~
Se descobrir o segredo me conta.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Parei aqui:

Código: Selecionar todos

itamar@itamar-desktop:~/fontes/exemplos$ hbmk2 teste.prg -comp=mingw64 -plat=win
hbmk2: Processando script local: hbmk.hbm
Harbour 3.2.0dev (r2403071241)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'teste.prg'...
Lines 5, Functions/Procedures 1
Generating C source output to '/tmp/hbmk_xamjmo.dir/teste.c'... Done.
gcc: error: unrecognized command-line option ‘-mconsole’
hbmk2: Erro: Executando linkeditor. 1
gcc /tmp/hbmk_xamjmo.dir/teste.o /tmp/hbmk_xamjmo.dir/hbmk_7c35ng.o    -mconsole -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lwinmm -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre   -Wl,--end-group -oteste.exe  -L/usr/local/lib/harbour
Esse "mconsole', acho que tem a ver com gtwvt,gtwin...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Se mudar para -gtwvt ele muda para mwindows

Código: Selecionar todos

itamar@itamar-desktop:~/fontes/exemplos$ hbmk2 teste.prg -comp=mingw64 -plat=win -gtwvt
hbmk2: Processando script local: hbmk.hbm
Harbour 3.2.0dev (r2403071241)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'teste.prg'...
Lines 5, Functions/Procedures 1
Generating C source output to '/tmp/hbmk_ch7x9c.dir/teste.c'... Done.
gcc: error: unrecognized command-line option ‘-mwindows’
hbmk2: Erro: Executando linkeditor. 1
gcc /tmp/hbmk_ch7x9c.dir/teste.o /tmp/hbmk_ch7x9c.dir/hbmk_prty8k.o    -mwindows -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lwinmm -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre   -Wl,--end-group -oteste.exe  -L/usr/local/lib/harbour
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Tô conseguindo progresso por esse local aqui:
https://github.com/harbour/core/issues/281

Código: Selecionar todos

#!/bin/bash

export HB_PLATFORM="win"
export HB_CCPREFIX="/usr/local/mingw/bin/x86_64-w64-mingw32-"
export HB_INSTALL_PREFIX="/Developer/harbour/"
export HB_HOST_BIN="/Developer/harbour/bin"
export HB_COMPILER="mingw64"
export HB_BUILD_CONTRIBS=

export HB_WITH_PCRE=local
export HB_WITH_ZLIB=local
export HB_WITH_BZIP2=local
export HB_WITH_JPEG=local
export HB_WITH_PNG=local
export HB_WITH_TIFF=local
export HB_WITH_LIBHARU=local
export HB_WITH_SQLITE3=local

PATH=/usr/local/mingw/bin/:$PATH
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Vlademiro »

Obrigado pelo retorno Itamar

Ainda não tive tempo de ver o que vc passou. Tive um imprevisto essa semana. Mas caso tenha algum sucesso eu posto o resultado.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como gerar um executável (.exe) a partir do Linux ?

Mensagem por Itamar M. Lins Jr. »

Olá!
A versão do Harbour gerando 32Bits para Windows está ok! Porquê consegue compilar os fontes do Harbour. A versão 64 no Linux, gerando os fontes do Harbour para DEPOIS gerar os nossos .EXE não compila. Postei no forum.
GCC 12. Tem 2 GCC Um Linux e outro para Windows "Dentro do Linux"

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder