Página 1 de 1

Erro na compilação ... conversão para linux ...

Enviado: 08 Jul 2021 16:06
por arcanjoebc
Peguei um exemplo de mala direta, e tentei compilá-lo com o Harbour, para depois, fazer coisas mais avançadas como, por exemplo, migrar um programa feito no Miro para o linux, também. Inicialmente, vou com a mala direta. Vejam os erros que aparecem no terminal do Lubuntu 18.04:
everaldo@pc-positivo:/media/everaldo/SAMSUNG/MLD$ hbmk2 -hbexe -ldflag=-no-pie mld.prg
Harbour 3.2.0dev (r1610041322)
Copyright (c) 1999-2016, http://harbour-project.org/
Compiling 'mld.prg'...
Cannot open MLDPROC.prg, assumed external
Cannot open Aviso.prg, assumed external
Cannot open Mensagem.prg, assumed external
Cannot open Tempo.prg, assumed external
Cannot open indexa.prg, assumed external
Cannot open Sinal.prg, assumed external
Cannot open Suja.prg, assumed external
Cannot open confirma.prg, assumed external
Lines 0, Functions/Procedures 1
Generating C source output to '/tmp/hbmk_m8bsf6.dir/mld.c'... Done.
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x130): referência não definida para "HB_FUN_SINAL"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x230): referência não definida para "HB_FUN_AVISO"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x790): referência não definida para "HB_FUN_MENSAGEM"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x7d0): referência não definida para "HB_FUN_TEMPO"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x810): referência não definida para "HB_FUN_INDEXA"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x870): referência não definida para "HB_FUN_NETUSE"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x8d0): referência não definida para "HB_FUN_SUJA"
/tmp/hbmk_m8bsf6.dir/mld.o:(.data.rel+0x9f0): referência não definida para "HB_FUN_CONFIRMA"
collect2: error: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc '/tmp/hbmk_m8bsf6.dir/mld.o' '/tmp/hbmk_m8bsf6.dir/hbmk_4030su.o' -no-pie -Wl,--start-group -lhbcplr -lhbdebug -lharbour -Wl,--end-group -omld -L/usr/lib/harbour

hbmk2: Erro: Referenciado, faltando, mas funções desconhecida(s): SINAL(),
AVISO(), MENSAGEM(), TEMPO(), INDEXA(), NETUSE(), SUJA(), CONFIRMA()
everaldo@pc-positivo:/media/everaldo/SAMSUNG/MLD$
Sei que trata-se de algo referente às funções ... mas por onde começo? Desde já, sou-lhes grato por resposta futura.

Erro na compilação ... conversão para linux ...

Enviado: 08 Jul 2021 16:25
por Itamar M. Lins Jr.
Olá!
Isso acontece no Windows também.
Estou fazendo isso aqui. Peguei meu projeto no Linux e estou compilando no Windows..
As pastas são diferentes.
No Linux: /home/itamar
No Windows: \users\itamar
E por ai vai

Basta ajustar no arquivo .HBP

Saudações,
Itamar M. Lins Jr.

Erro na compilação ... conversão para linux ...

Enviado: 08 Jul 2021 17:02
por Itamar M. Lins Jr.
Olá!
Crie um arquivo com a extensão .hbp e coloque dentro o nome dos "prg´s"
Exemplo meuprojeto.hbp:

Código: Selecionar todos

fontes\mld.prg
fontes\mldproc.prg
fontes\aviso.prg
pasta_tal\meuoutro.prg
...
Lembrando que precisa colocar MAIN no principal.
Que precisa vc colocar o o nome FUNCTION nos modulos... é o indicado!
Mas se colocar "-n" vai também. ? não sei se é -m ou -n pois não uso.

Saudações,
Itamar M. Lins Jr.

Erro na compilação ... conversão para linux ...

Enviado: 08 Jul 2021 21:24
por JoséQuintas
Itamar M. Lins Jr. escreveu:Mas se colocar "-n" vai também. ? não sei se é -m ou -n pois não uso.
-m é pra não "puxar" automaticamente PRGs, é o que parece que está acontecendo aí

Não significa que vai resolver o problema. Se as rotinas estão em outros fontes, vai dar falta delas no final.


-n é pra não usar o nome do PRG, assumir somente o conteúdo

arquivo TESTE.PRG

Código: Selecionar todos

PROCEDURE TESTE2
? "Hello"
Compilado com -n, o resultado será a procedure teste2
Sem isso, o resultado serão duas procedures: teste e teste2, porque o nome do fonte também entra
Já se não existir nome INTERNO, vai dar erro se compilar com -n, porque o nome do fonte seria o nome da procedure.