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 »

Caros,
Estou vindo do xHarbour e começando com o harbour agora, baixei os fontes do mesmo e compilei na minha máquina q é 64 bits, utilizando o msvc. Na hora de setar a configuração para compilar o harbour utilizei o parametro x86_amd64, como está no manual.
Compilei um primeiro programa q estava em xHarbour, tive vários problemas com nomes de funções q são diferente (getPrinter, getDefaultPrinter), mas achei as respostas aqui no forum e foi de boa, só que ao tentar rodar esse programa em uma máquina q é 32 bits, ele deu erro, falando que o programa não está compilado para aquela plataforma.
Dúvida: Como compilar os programas pra rodar tanto pra 32 como 64 bits? Ao levar o executável pra outra máquina, eu preciso levar alguma DLL ou instalar aqueles sdks padrão do windows?

Desde já agradeço a atenção recebida.
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!
Tenta compilar com o flag -comp=x86 -rebuild

Basta achar o flag para gerar em 32bits no msvc, não sei se é esse.
Tem que recompilar os fontes.
No GCC é.
-comp=mingw //é para 32bits
-comp=mingw64 //é para 64bits.

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 »

Adicionando o -comp=x86 deu erro mostrando a seguinte mensagem:
hbmk2: Processando opções do ambiente: -comp=msvc64

Será q terei q recompilar o harbour adicionando algum outro flag?
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!
https://github.com/vszakats/hb#platform-matrix
É -comp=msvc

Precisa recompilar o harbour para ter as libs em 32bits. Vai ter as duas, foi o que fiz aqui usando GCC.

Vai jogar nas pastas \lib\win\msvc e \lib\win\msvc64(essa já deve existir ai)

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 »

Não Itamar.

Infelizmente o Harbour 3.2 tá com esse bug.
A mensagem é porque esqueceram do 32 bits, e um fonte específico só tem pra 64 bits.
O erro é justamente pelo fonte usar coisa de 64 bits.

Sobre compilação:

Lembre-se: o Harbour gera fonte C, o compilador C faz o resto, e o linqueditor.

1) Primeira etapa da compilação

QUALQUER Harbour compila PRG - SOMENTE O PRG, a parte de transformar o PRG em fonte C

2) Segunda etapa da compilação

Entra o compilador C escolhido, tem o 32, 64 bits, e tem o 32+64 junto, no caso do mingw é mingw_x86_x64

3) Terceira etapa da compilação

Linquedita com as LIBs - precisa das LIBs para o mesmo compilador C

Diferença Harbour/XHarbour

O Harbour é preparado pra ter várias opções juntas, ele faz isso separando as LIBs em pastas:
lib/win/mingw, lib/win/mingw64, lib/win/bcc, lib/win/bcc64
Desta forma, pode gerar 32 ou 64 bits, ou usar compiladores diferentes na mesma máquina ao mesmo tempo.
NÃO significa que pode misturar compilação diferente, apenas que cada compilação vai usar o que é seu.

Os arquivos do Harbour costumam estar preparados pra isso, conforme a compilação, tem lá a diretiva do que precisa fazer e/ou usar.
O 3.2 tá com esse bug - tem um fonte que só foi feito pra 64 bits, e não tem indicação pra deixar de fora em 32 bits.

Mas tirando essa parte, se instalar o mingw x64_x64
Não sei de outra forma faço assim:
Gero o Harbour 32 bits: SET HB_COMPILER=mingw
gero o Harbour 64 bits: SET HB_COMPILER=mingw64

Como uso só 32 bits, deixo o SET HB_COMPILER=mingw
mas na hora que quiser, posso indicar o 64 bits.
hbmk2 projeto.hbp -comp=mingw64

No XHarbour pode ser igual, apenas os makes do xharbour não foram preparados pra isso.
Por isso comento de usar o HBMK2 no xHarbour, apenas pra ter as mesmas facilidades que existem no Harbour.
Tem 5 ou 6 downloads pra XHarbour, pra cada compilador, só com as LIBs, então poderia ser um único download.
Bastaria usar o HBMK2, e como os fontes são livres, poderia até ter um específico pra XHarbour com ele.
Na falta disso no Xharbour, dá pra usar o do Harbour..... que funciona pra XHarbour.
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
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 »

E quanto ao Harbour 3.2..... sinceramente não sei.
Uso o Harbour 3.4, e com ele não tem esse problema.
Mas NÃO USO nada opcional, apenas baixo os fontes do Harbour e o resultado da geração com esses fontes é o que eu uso.

Isso NÃO serve pra quem usa hbmysql, libcurl, openssl, e outros opcionais pra Windows/Linux que dependem de downloads adicionais.
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!
E quanto ao Harbour 3.2..... sinceramente não sei.
Pois é cidadão. É para Harbour 3.2 e eu uso da forma que falei lá em cima.
Só coloquei o LINK da forma de fazer, que tem no fork.
É só o link, mas o Harbour é 3.2

Uso o Harbour 3.2 e GCC 10.1 32 e 64 Bits e faço da forma que expliquei.
Isso NÃO serve pra quem usa hbmysql, libcurl, openssl, e outros opcionais pra Windows/Linux que dependem de downloads adicionais.
Baixo essas libs para 32 e 64 bits no Harbour 3.2 e tudo está ok, mais OK quando uso 32Bits, Com 64bits a GTWVW não compila.

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 »

Baixei os fontes do harbour do repositorio no github, e vi que está com a versão 3.2. Onde encontro a versão 3.4?
Verificando a pasta lib dentro de harbour, vi que a mesma tem uma pasta win\msvc64, mas dentro desta pasta tem alguns arquivos duplicados, como gtwvt.lib e gtwvt-x64.lib, hbblink.lib e hbblink-x64.lib, a lib do harbour está assim harbour-32-x64.lib, teoricamente o meu harbour já teria as libs para as duas plataformas não? Já que no Platform matrix do github tá dizendo que msvc64 é pra x86-64.
Mais uma vez agradeço a atenção recebida.
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 »

marco.prodata escreveu:vi que está com a versão 3.2. Onde encontro a versão 3.4?
Atenção a isso:

Harbour 3.4 NÃO é um Harbour mais novo, é um fork.

Tem o projeto harbour-project, de onde sairam os forks XHARBOUR e Harbour 3.4
Do mesmo jeito que o fork xharbour seguiu outro caminho, o Harbour 3.4 também
O 3.4 SEMPRE teve as alterações do 3.2... andava junto... mas parou.

No meu caso, dependo do que existe no 3.4, e não vou trocar tão cedo, só se aparecer algo obrigatório.
No momento NADA novo do 3.2 faz falta pra mim.

Como não sabemos o que vai acontecer com o 3.4, talvez melhor ficar no 3.2 mesmo, porque qualquer coisa diferente, vai ter suporte e correção.
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
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 »

Uia:
d:\harbour\lib> dir libgtwvw*.* /s/b

d:\harbour\lib\win\mingw\libgtwvw.a
d:\harbour\lib\win\mingw64\libgtwvw.a
No Harbour 3.4, a GTWVW saiu dos extras e foi pra contribuições.
O Viktor deu uma boa mexida nela.
E pelo jeito tem pra 64 bits.
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!
Onde encontro a versão 3.4?
A 3.4 é um fork.
Esta no primeiro link.
Vc criou o harbour a partir do MSVC, fez o download das fontes.

Se desejar o Harbour 3.2 já pronto com o gcc-> mingw(padrão) pegue aqui. Já vem com o Mingw 32bits na pasta \comp
https://sourceforge.net/projects/harbou ... e/download
Esse pacote é instalar e usar, já vem com tudo pronto.

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!
No Harbour 3.4, a GTWVW saiu dos extras e foi pra contribuições.
O Viktor deu uma boa mexida nela.
E pelo jeito tem pra 64 bits.
Cuidado, está misturando postagens, aumentado o tópico com off topic.
Ps. Agora que viu isso?

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:Cuidado, está misturando postagens, aumentado o tópico com off topic.
Ok, o post sobre gtwvw era o outro.

Aqui tenho as pastas win/mingw e win/mingw64, e uso o compilador C x86_x64
gtwvw.png
Mas voltando ao início do post:

Se gerar Harbour 32 bits, vai rodar em 32 ou 64 bits.
Pode fazer isso na máquina 64 bits, é o que uso aqui.

Pode baixar o mingw 32, ou o mingw 32_64 que vém com os dois.
Esse compilador é o mais usado, o download é de 50MB.

Caso não saiba, o MSVC depende de run-time, dependendo da máquina que for instalar o programa, vai ter que instalar primeiro o run-time do MSVC. Deixei de usar o MSVC por causa disso.

Pra deixar fixo na máquina o 32 bits, configure em HB_COMPILER
set HB_COMPILER=mingw

Ainda vai ter a opção de fazer como eu fiz, de gerar 64 bits quando quiser.
Mas... só vai rodar em 64 bits.

Para o msvc, as opções são:

SET HB_COMPILER=msvc
SET HB_COMPILER=msvc64
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
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 »

Reforçando isso:

MSVC depende de run-time.

No Windows vém run-time do MSVC mas.... de uma versão, que pode NÃO ser a sua.
O resultado é ter que ficar instalando isso aonde não tem.

Como perguntou sobre ter que instalar DLL... saiba que o MSVC é assim.
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/
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 »

Entendi,
Usei o msvc pois já tenho na minha máquina o visual studio instalado, então, queria aproveitar o mesmo. Sobre o nigtly builds, eu gosto de compilar os fontes no braço, então, vou "tentar" compilar aqui até conseguir funcionar, rsrsrs, persistência. Qual o compilador C vcs recomendam, o mingw mesmo?
Responder