Criar executavel x86/64
Moderador: Moderadores
-
marco.prodata
- Usuário Nível 3

- Mensagens: 238
- Registrado em: 30 Nov 2018 10:07
- Localização: Caratinga
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
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
&& 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.
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}-toolchain2.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.
Itamar M. Lins Jr.
-
marco.prodata
- Usuário Nível 3

- Mensagens: 238
- Registrado em: 30 Nov 2018 10:07
- Localização: Caratinga
Criar executavel x86/64
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.
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.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
Ola!
Precisa do Msys2. Ele vai baixar o GCC 10.1 para 32 e 64.
Saudações,
Itamar M. Lins Jr.
Tá explicado ai em cima.harbour/lib/win/mingw e harbour/lib/win/mingw64,
Precisa do Msys2. Ele vai baixar o GCC 10.1 para 32 e 64.
Vai depois compilar os fontes do harbour 3.2 para 32 e 64 e criar as libs em pasta separadas.mingw-w64-{i686,x86_64}-toolchain
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
Ola!
Usando o Msys2 vc terá as atualizações do GCC ou CLang.
Veja:
Pode ter até 4 compiladores 2 GCC e 2 CLang 32/64Bits.
Aqui uso apenas GCC.
O PADRÃO, irá depender do que estiver no 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:
Porquê vc já usa 64Bits padrão no PATH.
Saudações,
Itamar M. Lins Jr
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
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
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%
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.
Saudações,
Itamar M. Lins Jr
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Criar executavel x86/64
Sinto muito, aqui não é assim, é pasta única pra 32 ou 64 bits, então o PATH NÃO É o pulo do gato.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.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
Ola!
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 Saudações,
Itamar M. Lins Jr.
Como vc sabe que o GCC é 64 ou 32 ?Sinto muito, aqui não é assim, é pasta única pra 32 ou 64 bits, então o PATH NÃO É o pulo do gato.
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 Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
Ola!
Olhe ai:
DUAS pastas DUAS LIBS DUAS tudo... OPENSSL, CURL...
Saudações,
Itamar M. Lins Jr.
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>
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Criar executavel x86/64
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

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Criar executavel x86/64
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar executavel x86/64
Ola!
Saudações,
Itamar M. Lins Jr.
Simpelo que entendi tem de compilar o HARBOUR em 32 e 64 para gerar as libs do HARBOUR nas duas opções é isso mesmo?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
marco.prodata
- Usuário Nível 3

- Mensagens: 238
- Registrado em: 30 Nov 2018 10:07
- Localização: Caratinga
Criar executavel x86/64
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.
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

- Mensagens: 238
- Registrado em: 30 Nov 2018 10:07
- Localização: Caratinga
Criar executavel x86/64
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.