Criar executavel x86/64

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

Moderador: Moderadores

marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Criar executavel x86/64

Mensagem por marco.prodata »

O mingw32-64 é o deste site mingw-w64.org ?
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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!

Win10 OS.

1) Download and install msys2
https://www.msys2.org/
https://repo.msys2.org/distrib/x86_64/m ... 200903.exe //em 03/09/2020, muda constantemente.

2) Open MSYS2 box, to update msys2
$ pacman -Syu
$ pacman -Su

2.a) Attention, this command get GCC 32 and 64 Bit

Código: Selecionar todos

$ pacman -S git base-devel msys2-devel mingw-w64-{i686,x86_64}-toolchain
&& Exit of msys2 box3

2.b)Now get OpenSSL,Curl, this link of Viktor Szakats.
https://github.com/curl/curl-for-win#bi ... -downloads
>set HB_STATIC_CURL=yes
>set HB_STATIC_OPENSSL=yes
>set HB_WITH_OPENSSL=C:\openssl-1.1.1g-win64-mingw\include
>set HB_WITH_CURL=C:\curl-7.70.0-win64-mingw\include

Get git! https://git-scm.com/downloads and install it
3) Open a CMD box, and get harbour font of git into \hb32-code
>git clone --depth=20 https://github.com/harbour/core.git hb32-code

3.a) Fix! to extract static lib of CURL. 64Bit
cd \hb32-code\contrib\hbcurl
&&Edit hbcurl.hbp and add this.
-depimplibs=curl:../bin/libcurl-x64.dll

3.b) Now add in PATH to GCC "SEE" your maker harbour 64 .or 32 Bits
&& Here! if your want GCC64
>set PATH=C:\msys64\mingw64\bin;%PATH%
&& And for 32 bit set path like this
>set PATH=C:\msys64\mingw32\bin;%PATH%
4) Make harbour "bin" files!
>cd \hb32-code
>set HB_INSTALL_PREFIX=c:\hb32
>mingw32-make clean install
&& Now Wait! make install harbour files EXE/DLL/LIB(.a) into \hb32
>set PATH=C:\hb32\bin;%PATH%
>cd tests
>hbmk2 speed.prg

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Criar executavel x86/64

Mensagem por marco.prodata »

Mestres,
Baixei o mingw-86-64 como indicado pelos colegas, sei q setando HB_COMPILER=mingw ele vai gerar o harbour em 32 bits, e a compilação funcionaria tanto na 32 quanto 64 bits, mas gostaria de chegar no cenário que o José Quintas chegou, tendo a pasta harbour/lib/win/mingw e harbour/lib/win/mingw64, pra gerar executaveis especificos pra 64 quando precisasse. Como faço nesse caso? Compilando a partir dos fontes do harbour?
Estou querendo fazer isso por questão de aprendizado mesmo.
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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!
harbour/lib/win/mingw e harbour/lib/win/mingw64,
Tá explicado ai em cima.

Precisa do Msys2. Ele vai baixar o GCC 10.1 para 32 e 64.
mingw-w64-{i686,x86_64}-toolchain
Vai depois compilar os fontes do harbour 3.2 para 32 e 64 e criar as libs em pasta separadas.


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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!
Usando o Msys2 vc terá as atualizações do GCC ou CLang.
Veja:

Código: Selecionar todos

C:\>dir \msys64 /ad
 O volume na unidade C não tem nome.
 O Número de Série do Volume é 906B-7B11

 Pasta de C:\msys64

26/08/2020  22:37    <DIR>          .
26/08/2020  22:37    <DIR>          ..
26/08/2020  22:31    <DIR>          clang32
26/08/2020  22:31    <DIR>          clang64
26/08/2020  22:35    <DIR>          dev
26/08/2020  23:07    <DIR>          etc
26/08/2020  22:35    <DIR>          home
26/08/2020  22:35    <DIR>          installerResources
26/08/2020  23:16    <DIR>          mingw32
26/08/2020  23:26    <DIR>          mingw64
26/08/2020  22:31    <DIR>          opt
26/08/2020  23:26    <DIR>          tmp
26/08/2020  23:08    <DIR>          usr
26/08/2020  22:31    <DIR>          var
               0 arquivo(s)              0 bytes
              14 pasta(s)   187.847.602.176 bytes disponíveis
Pode ter até 4 compiladores 2 GCC e 2 CLang 32/64Bits.
Aqui uso apenas GCC.

Código: Selecionar todos

C:\>tree \hb32\lib
Listagem de caminhos de pasta
O número de série do volume é 906B-7B11
C:\HB32\LIB
└───win
    ├───mingw
    └───mingw64
O PADRÃO, irá depender do que estiver no PATH

Código: Selecionar todos

>set PATH=C:\msys64\mingw64\bin;%PATH%
&& And for 32 bit set path like this
>set PATH=C:\msys64\mingw32\bin;%PATH%
Primeira etapa baixar o GCC.
Segunda etapa baixar os fontes do Harbour.
Terceira gerar os binários do Harbour!, tanto faz ser 32 ou 64.
Instale o Git para baixar o Harbour https://git-scm.com/downloads

Agora para gerar o NOSSO EXECUTÁVEL, precisamos das LIBS de 32 ou 64.(do Harbour)
O Harbour em 32Bits, vai gerar .EXEs de 32 ou 64 o Harbour de 64Bits pode gerar .EXEs 32 ou 64.

O pulo do gato é apenas o PATH para o compilador GCC, que vc vai dizer se quer 32 ou 64 só isso. O Hbmk2 vai procurar no PATH qual é o compilador, não precisa ficar setando nada a mais do que já foi explicado.
Dai se vc gerou o Harbour, primeiro em 32Bits e depois gerou o Harbour em 64Bits e o PATH esta para: set PATH=C:\msys64\mingw64\bin;%PATH%
Basta usar:

Código: Selecionar todos

hbmk2 meuprojeto.hbp -comp=mingw //Para gerar 32Bits.
Porquê vc já usa 64Bits padrão no PATH.

Saudações,
Itamar M. Lins Jr
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criar executavel x86/64

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:O pulo do gato é apenas o PATH para o compilador GCC, que vc vai dizer se quer 32 ou 64 só isso. O Hbmk2 vai procurar no PATH qual é o compilador, não precisa ficar setando nada a mais do que já foi explicado.
Sinto muito, aqui não é assim, é pasta única pra 32 ou 64 bits, então o PATH NÃO É o pulo do gato.
E NÃO fui eu que fiz assim, é "original de fábrica" da instalação do mingw x86_x64.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!
Sinto muito, aqui não é assim, é pasta única pra 32 ou 64 bits, então o PATH NÃO É o pulo do gato.
Como vc sabe que o GCC é 64 ou 32 ?
Tá entendendo errado e fazendo confusão.
Tem dois GCC.EXE ai ? Na mesma pasta ?
Quem separa é o Msys2, vem com tudo separado.

E o Harbour faz a mesma coisa com as próprias libs.
Padrão no 3.4 é CLANG.
https://github.com/vszakats/harbour-cor ... hot-win.7z
Screenshot_20200903_193507.png
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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!
Olhe ai:

Código: Selecionar todos

C:\hb34>cd \msys64

C:\msys64>cd mingw32

C:\msys64\mingw32>cd bin

C:\msys64\mingw32\bin>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-10.2.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --disable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (Rev1, Built by MSYS2 project)

C:\msys64\mingw32\bin>cd ..

C:\msys64\mingw32>cd ..

C:\msys64>cd mingw64

C:\msys64\mingw64>cd bin

C:\msys64\mingw64\bin>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
Target: x86_64-w64-mingw32
Configured with: ../gcc-10.2.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --disable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (Rev1, Built by MSYS2 project)

C:\msys64\mingw64\bin>
DUAS pastas DUAS LIBS DUAS tudo... OPENSSL, CURL...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Criar executavel x86/64

Mensagem por Fernando queiroz »

pelo que entendi tem de compilar o HARBOUR em 32 e 64 para gerar as libs do HARBOUR nas duas opções é isso mesmo?
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Criar executavel x86/64

Mensagem por Fernando queiroz »

olha ai o teste em 64 bit
olha ai o teste em 64 bit
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
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

Criar executavel x86/64

Mensagem por Itamar M. Lins Jr. »

Ola!
pelo que entendi tem de compilar o HARBOUR em 32 e 64 para gerar as libs do HARBOUR nas duas opções é isso mesmo?
Sim

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Criar executavel x86/64

Mensagem por marco.prodata »

Seguindo, baixei o mingw32 e 64 bits pelo msys, como sugerido pelo colega itamar, compilei o harbour 32 bits pra uma pasta e harbour 64 pra outra, tudo tranquilo por enquanto.
Na compilação do harbour, adicionei o caminho pros includes do postgresql, pq preciso dessa lib, assim:
set HB_WITH_PGSQL=E:\pgsql_12_4\include
na compilação do harbour, gerou a libhbpgsql.a normalmente, mas ao compilar com o harbour 32 bits um programa q precisa dessa lib, tive os seguintes erros:

hbmk2: Linkando... PROECFR.exe
e:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: e:/harbour_32/lib/win/mingw/libhbpgsql.a(postgres.o):postgres.c:(.text+0x19): undefined reference to `PQfinish'
e:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: e:/harbour_32/lib/win/mingw/libhbpgsql.a(postgres.o):postgres.c:(.text+0x49): undefined reference to `PQclear'

e mais alguns, relacionados a funções da mesma lib, saberiam dizer do q se trata?

meu path pra compilação de programas harbour 32 está assim:
PATH=e:\msys64\mingw32\bin;e:\harbour_32\bin;%path%

Mais uma vez agradeço a atenção recebida.
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Criar executavel x86/64

Mensagem por marco.prodata »

Já descobri, os headers que baixei do postgresql são pra 64 bits, vou ver se achos de 32bits do postgresql 12. Acho q achei o fio da meada agora, vlw pelas informações.
Responder