Página 1 de 1

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

Enviado: 11 Mar 2024 19:39
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.

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

Enviado: 11 Mar 2024 20:30
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.

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

Enviado: 11 Mar 2024 20:54
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.

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

Enviado: 11 Mar 2024 21:08
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.

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

Enviado: 11 Mar 2024 21:10
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.

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

Enviado: 11 Mar 2024 21:50
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.

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

Enviado: 14 Mar 2024 18:54
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.

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

Enviado: 14 Mar 2024 19:15
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.