xHarbour para Linux

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

Moderador: Moderadores

gracielaboschetti
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 02 Out 2013 15:17
Localização: Belo Horizonte

xHarbour para Linux

Mensagem por gracielaboschetti »

Olá Pessoal,

O meu sistema em Clipper 5.3 rodo em xHarbour para Win32 também. Agora surgiu a necessidade de compilá-lo para Linux.

Estou com uma série de problemas.

O sistema não consegue encontrar um arquivo de licença (um arquivo texto) que está na mesma pasta do executável.

Outra dúvida é com relação às execuções da compilação. Em várias partes do sistema, o código se refere a pastas com a barra invertida "\". Gostaria de saber se a compilação para Linux troca por barra normal "/".

Tem outra coisa acontecendo. No caso do arquivo de impressoras o sistema está procurando em uma pasta chamada "root\Documents", sendo que deveria buscar na pasta onde fica o executável.

Desde já agradeço-lhes imensamente!! Estou com a maior urgência em resolver esses problemas.

um abraço,

Graciela
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

xHarbour para Linux

Mensagem por alxsts »

Olá!

Seja muito bem-vinda ao Fórum Graciela.

Atualmente não trabalho com Linux ou Unix mas, talvez possa contribuir com alguma coisa:
gracielaboschetti escreveu:O meu sistema em Clipper 5.3 rodo em xHarbour para Win32 também. Agora surgiu a necessidade de compilá-lo para Linux.
Você não relata problemas na compilação e geração do executável mas, em todo caso, segue um exemplo de script de compilação para Unix/Linux (GCC)

Código: Selecionar todos

#GCC
!ifndef CC_DIR
CC_DIR = $(MAKE_DIR)
!endif

!ifndef HB_DIR
HB_DIR = $(HARBOUR_DIR)
!endif
 
RECURSE= NO 
 
SHELL = 
COMPRESS = NO
EXTERNALLIB = NO
XFWH = NO
FILESTOADD =  5
WARNINGLEVEL =  0
USERDEFINE = 
USERINCLUDE = 
USERLIBS = 
EDITOR = mcedit
GUI = NO
MT = NO
PROJECT = tirateima.xhb $(PR) 
OBJFILES = $(OB) 
PRGFILES = $(PS)
OBJCFILES = $(OBC) 
CFILES = $(CF)
RESFILES = 
RESDEPEN = 
TOPMODULE = 
LIBFILES = -Wl,--start-group -lvm -lrtl -lpcrepos -lgtcrs -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -ldbffpt -lhsx -lhbsix -lcommon -lcodepage -lgtnul -Wl,--end-group -lncurses -lslang -lgpm  -lpthread -lm
EXTLIBFILES =
DEFFILE = 
HARBOURFLAGS =  -w0
CFLAG1 = $(SHELL) -I/usr/include/xharbour -c -Wall 
CFLAG2 = -L$(HB_LIB_INSTALL)
RFLAGS = 
LFLAGS =  $(CFLAG2) 
IFLAGS = 
LINKER = gcc
 
ALLOBJ = $(OBJFILES)  $(OBJCFILES)
ALLRES = $(RESDEPEN) 
ALLLIB = $(USERLIBS) $(LIBFILES) 
.autodepend
 
#DEPENDS
 
#COMMANDS
.cpp.o:
gcc $(CFLAG1) $(CFLAG2) -o$* $**
 
.c.o:
gcc -I/usr/include/xharbour $(CFLAG1) $(CFLAG2) -I. -g -o$* $**
 
.prg.o:
harbour -D__EXPORT__  -n  -go -I/usr/include/xharbour $(HARBOURFLAGS) -I.  -o$* $**
 
#BUILD
 
$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
    $(LINKER) @&&!
    $(PROJECT) 
    $(ALLOBJ)  
    $(LFLAGS)  
    $(ALLLIB)  
!
No prompt de comando do Unix/Linux digite hbmake NomeScript.bc. Para executar, digite NomePrograma.xhb.
gracielaboschetti escreveu:O sistema não consegue encontrar um arquivo de licença (um arquivo texto) que está na mesma pasta do executável.
Não seria algum problema de permissão de acesso na pasta? Emita o comando abaixo para dar permissão total na pasta do teu sistema e subpastas e arquivos:

Código: Selecionar todos

chmod -R 777 SuaPasta
gracielaboschetti escreveu:Gostaria de saber se a compilação para Linux troca por barra normal "/".
Não, você precisará fazer isso nos programas já existentes. Fica mais fácil usando o recurso "Find and Replace" de um bom editor de textos. Em programas novos, para tornar transparente esta diferença de separador existente entre as plataformas, tanto o Harbour quanto o xHarbour contam com uma função que retorna o separador padrão do sistema:

Código: Selecionar todos

LOCAL cDelim := HB_OsPathSeparator()
O mesmo vale para os separadores de linhas em arquivos texto:

Código: Selecionar todos

cLineSep := HB_OSNewLine() // Retorna Chr(10) em Unix/Linux ou Chr(13) + Chr(10) no DOS/Windows
gracielaboschetti escreveu:No caso do arquivo de impressoras o...
Neste caso não sei o que pode ser mas, provavelmente alguma configuração incorreta. Verifique e/ou pesquise mais

Boa sorte e continue postando.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

xHarbour para Linux

Mensagem por alxsts »

Olá!

É com essa barra ao contrário mesmo? Não seria ./?
[]´s
Alexandre Santos (AlxSts)
Responder