Gambas-it

Gambas3 => Programmazione => Topic aperto da: giango - 22 Settembre 2014, 14:27:34

Titolo: [RISOLTO] compilazione
Inserito da: giango - 22 Settembre 2014, 14:27:34
Si può creare un pacchetto di installazione su una macchina a 64bit che funzioni solo con le librerie a 32bit?
Questo ovviamente si rende necessario dal momento in cui non sappiamo a priori su quale macchina girerà
il nostro software. Pertanto, prima di decidermi a sostituire la mia installazione a 64 con una a 32, solo per
poterlo compilare nel modo appropriato, chiedo a voi se la cosa sia fattibile.
Grazie.
Titolo: Re: compilazione
Inserito da: aulin - 23 Settembre 2014, 18:57:01
Una macchina virtuale?
Titolo: Re: compilazione
Inserito da: giango - 24 Settembre 2014, 12:08:39
No, non centra la macchina virtuale.
Col mio sistema a 64bit devo produrre un pacchetto che funzioni su una macchina "reale" a 32bit.
E' ovvio che bisogna forzare le librerie a 32bit, ma non so come si fa.
Titolo: Re: compilazione
Inserito da: sotema - 24 Settembre 2014, 17:13:37
Fornire l'eseguibile?
Titolo: Re: compilazione
Inserito da: giango - 24 Settembre 2014, 17:54:56
Esatto. Dovrei fornire l'eseguibile che funzioni su un sistema a 32bit, ma devo per forza
crearlo su una macchina a 64.
Titolo: Re: compilazione
Inserito da: sotema - 24 Settembre 2014, 18:18:04
l'eseguibile di un progetto gambas, che differisce da un pacchetto d'installazione, dovrebbe essere indipendente dall'architettura 32/64 bit.
Se non ricordo male in passato avevo fatto la prova su due pc domestici, per l'appunto 1 a 32 l'altro a 64 bit ed in entrambi i casi tutto funzionava correttamente.
Per creare un eseguibile:
Progetto --> Crea --> Eseguibile.
Ti crea un file con estensione .gambas che può essere eseguito, avendo installato il runtime, senza necessità di installazione.
Titolo: Re: compilazione
Inserito da: giango - 25 Settembre 2014, 09:32:52
E' infatti quello che ho fatto. Ho installato il runtime sulla macchina a 32bit e poi ho copiato l'eseguibile "xxx.gambas" in una cartella di lavoro apposita contenente le sottocartelle di riferimento: database, e file di supporto previsti dal progetto. Ma la cosa non funzionava e mi dava errore. E' per questo che ho posto la domanda in questo forum, supponendo che l'eseguibile dovesse essere compilato con librerie appropriate. Proverò nuovamente su un'altra macchina e vi saprò riferire.
Per il momento vi ringrazio per la collaborazione.
Titolo: Re: compilazione
Inserito da: Picavbg - 26 Settembre 2014, 00:17:24
Non vorrei sbagliarmi perchè da quando conosco Gambas ho sempre utilizzato il formato Gambas per ambienti a 64 bit, ma ricordo che partendo da un download di Gambas nel formato 32 bit, esso funzioni anche in un sistema a 64 bit. Però, con una simile realtà, il programma scritto in un sistema a 64 bit può essere riversato tranquillamente in un sistema a 32 bit.

Auguri!  :ciao:
Titolo: Re: compilazione
Inserito da: giango - 26 Settembre 2014, 08:32:24
Un nuovo grazie per la vostra disponibilità.
Quando avrò portato a termine il mio progetto, vi farò sapere come è andata e le
soluzioni tecniche eventualmente adottate.
Titolo: Re: compilazione
Inserito da: giango - 26 Settembre 2014, 21:30:08
Allora, vediamo di aggiornare il problema. Ho provveduto a creare l'eseguibile ed installarlo sulla macchina destinazione a 32bit, creando
la cartella apposita per contenerlo insieme alle altre cartelle di supporto dati. Ovviamente ho anche installato il runtime a 32bit come previsto,
e poi ho dato i permessi di esecuzione al file "Registrazioni.gambas".
Provando a lanciarlo da terminale il risultato è il seguente:
Citazione
gbr3: no project file in /home/utente/Progetti/registrazioni.gambas
Si tenga presente che nella classe di avvio del sorgente ho inserito:
Citazione
Public cartella As String = User.Home & "/Progetti/Registrazioni/"
e questa è la cartella che contiene l'eseguibile.
Questo è dunque il punto in cui mi blocco e non so come procedere......!
Titolo: Re: compilazione
Inserito da: Picavbg - 26 Settembre 2014, 23:20:00
.........
e poi ho dato i permessi di esecuzione al file "Registrazioni.gambas".
Provando a lanciarlo da terminale il risultato è il seguente:
Citazione
gbr3: no project file in /home/utente/Progetti/registrazioni.gambas

Se hai chiamato il file Registrazioni.gambas ed all'avvio da terminale cerchi il file registrazioni.gambas, il progetto non può assolutamente avviarsi; infatti i nomi dei file sono diversi.
 :ciao:



Titolo: Re: compilazione
Inserito da: Top Fuel - 27 Settembre 2014, 00:27:19
Infatti Linux è case sensitive. Prova da terminale semplicemente a cambiare directory ignorando maiuscole e minuscole, se ci riesci... :)
Titolo: Re: compilazione
Inserito da: giango - 27 Settembre 2014, 08:25:30
No, non è questo il problema, ho solo sbagliato a scrivere. E' solo il nome della cartella in cui è contenuto ad essere diversa.
Titolo: Re: compilazione
Inserito da: Picavbg - 27 Settembre 2014, 23:37:56
No, non è questo il problema, ho solo sbagliato a scrivere. E' solo il nome della cartella in cui è contenuto ad essere diversa.

é vero, non me ne ero accorto. Il percorso indicato nella classe d'avvio del programma è diverso da quello scritto nella shell. E' anche vero che non ci hai detto in quale directory si trovi veramente registrazioni.gambas. Si trova in /home/utente/Progetti/registrazioni.gambas o in /home/utente/Progetti/Registrazioni/registrazioni.gambas?
Dovresti perciò rispettare in entrambi i comandi l'unico percorso esatto.

Secondo me non ci sono altre spiegazioni. Infatti la shell ti dice che non trova il file /home/utente/Progetti/registrazioni.gambas.
Allora potrebbe essere corretto scrivere nella shell il comando /home/utente/Progetti/Registrazioni/registrazioni.gambas.

É così?
 :ciao:
Titolo: Re: compilazione
Inserito da: giango - 28 Settembre 2014, 14:33:16
Ho dunque fatto in modo che le impostazioni di percorso siano corrispondenti su entrambe le macchine, quella di sviluppo, e quella destinazione,
ritenendo erroneamente che il percorso memorizzato nelle variabili di sistema fosse quello determinante nel funzionamento.
Ora che la corrispondenza è esatta, provo a lanciare da terminale ed ottengo quanto segue:
Citazione
ERROR: #2: Cannot load class 'avvio': Bytecode too recent. Please upgrade Gambas.
La versione runtime a 32 bit è in effetti la 3.1.1-2.2ubuntu4 mentre quella sulla macchina di sviluppo è la 3.5.4-22~ubuntu14.
Quello che posso capire dunque è che si tratti di una compilazione inadatta a motivo di librerie diverse.
Credo pertanto di dover compilare il prg su una macchina a 32bit con la stessa versione installata di gambas3.
Se le cose stanno così, non è possibile distribuire il prodotto compilato, quando non si conosce la versione del runtime
delle macchine sulle quale dovrà girare.
Sbaglio?
Titolo: Re: compilazione
Inserito da: Picavbg - 28 Settembre 2014, 23:50:05
Non ho capito le prove che stai facendo. Pensavo che stessi lavorando soltanto sull'ambiente di sviluppo e che il problema del malfunzionamento fosse in quello. Dopo l'ultima tura risposta ho le idee confuse.
Dove non riesci ad avviare il programma eseguibile? Nel pc dedicato allo sviluppo, dove avrai sicuramente installato Gambas, registrazioni.gambas si avvia?
Per ora non faccio altre domande. Se non ti dispiace soffermiamoci sull'ambiente di sviluppo.
 :ciao:
Titolo: Re: compilazione
Inserito da: giango - 29 Settembre 2014, 09:25:40
Nell'ambiente di sviluppo tutto funziona a dovere, non ci sono problemi.
Il problema non riguarda questo ambiente, ma la macchina alla quale è destinato.
Ho scritto in precedenza, pensando di essere stato chiaro:
Citazione
Dovrei fornire l'eseguibile che funzioni su un sistema a 32bit, ma devo per forza
crearlo su una macchina a 64.
Ma se devo come dici tu, considerare solo l'ambiente di sviluppo
Citazione
Se non ti dispiace soffermiamoci sull'ambiente di sviluppo.
non vedo come possa risolvere il problema che ho posto.
A meno che.... a meno che non debba settare qualcosa nell'ambiente di sviluppo per poter
far funzionare l'eseguibile sulla macchina destinazione, sulla quale non è installata la stessa versione
del runtime che ho nell'ambiente di sviluppo.

Titolo: Re: compilazione
Inserito da: sotema - 29 Settembre 2014, 10:02:48
Citazione
ERROR: #2: Cannot load class 'avvio': Bytecode too recent. Please upgrade Gambas.
La versione runtime a 32 bit è in effetti la 3.1.1-2.2ubuntu4 mentre quella sulla macchina di sviluppo è la 3.5.4-22~ubuntu14.
Quello che posso capire dunque è che si tratti di una compilazione inadatta a motivo di librerie diverse.
Credo pertanto di dover compilare il prg su una macchina a 32bit con la stessa versione installata di gambas3.
Se le cose stanno così, non è possibile distribuire il prodotto compilato, quando non si conosce la versione del runtime
delle macchine sulle quale dovrà girare.
Sbaglio?
Sbagli,
l' errore è determinato dal fatto che, la versione del runtime a 32 bit è troppo vecchia rispetto a quella di sviluppo a 64 bit.

Come hai installato la versione di sviluppo? Sicuramente non dai repo ufficiali, che per Trusty contengono esattamente la stessa revisione del runtime. (3.1.1-2.2ubuntu4) che immagino  hai scaricato da Repo.
Dovresti quindi assicurarti che le due versioni siano quantomeno dello stesso ramo (3.5.x)

PS le versioni di Gambas nei repo Ubuntu sono notoriamente difettose. http://gambaswiki.org/wiki/install/ubuntu (http://gambaswiki.org/wiki/install/ubuntu)
Titolo: Re: compilazione
Inserito da: giango - 29 Settembre 2014, 10:08:27
Ecco qui la risposta che cercavo!
Citazione
PS le versioni di Gambas nei repo Ubuntu sono notoriamente difettose. http://gambaswiki.org/wiki/install/ubuntu
Ho installato in effetti gambas3 dai repo ufficiali di Ubuntu, quelli settati di default dall'installazione di Mint KDE32.
Provvederò dunque a disinstallare la versione precedente e mettere il runtime v. 3.5.xx.
Vi farò sapere come è andata.
Titolo: Re: compilazione
Inserito da: sotema - 29 Settembre 2014, 10:26:58
qui trovi la versione a 32 bit del runtime. Prima di installarlo rimuovi completamente la versione da repo:
Codice: [Seleziona]
sudo apt-get purge gambas*


https://launchpad.net/~gambas-team/+archive/ubuntu/gambas3/+files/gambas3-runtime_3.5.4-49%7Eubuntu12.04.1_i386.deb (https://launchpad.net/~gambas-team/+archive/ubuntu/gambas3/+files/gambas3-runtime_3.5.4-49%7Eubuntu12.04.1_i386.deb)
Titolo: Re: compilazione
Inserito da: allegfede - 29 Settembre 2014, 12:21:07
installa TU una macchina virtuale linux a 32 bit sulla tua macchina REALE a 64 bit.

Se vuoi compilare a 32 bit, lancia la macchina VIRTUALE e compili con QUEL gambas :D

sicuramente otterrai un eseguibile a 32 bit!

PS: io IN OGNI CASO farei un controllo sulla versione del run-time di gambas per "forzare" gli utenti ad sincronizzare il loro interprete gambas con la versione che tu usi in sviluppo. Senno ti riempiranno di email/telefonate che gli aggiornamenti non funzionano ;-)
Titolo: Re: compilazione
Inserito da: giango - 29 Settembre 2014, 12:29:47
In effetti il problema consisteva proprio nella versione di gambas3 che era diversa, visto che nella macchina di sviluppo avevo quella
del repository ppa: gambas - team / gambas3, mentre in quella a 32bit avevo installato quella vecchia proposta dai repo ubuntu.
Facendo puntare al suddetto repo anche il sistema a 32bit, la mia installazione è andata a buon fine, passando ovviamente dalla fase
"crea pacchetto di installazione".
Si sono infatti installate le librerie opportune a 32bit e la cosa si è risolta.
Grazie a tutti per la cortese collaborazione.
Titolo: Re: compilazione
Inserito da: Picavbg - 29 Settembre 2014, 23:25:13
Nell'ambiente di sviluppo tutto funziona a dovere, non ci sono problemi.
Il problema non riguarda questo ambiente, ma la macchina alla quale è destinato.

Ma se devo come dici tu, considerare solo l'ambiente di sviluppo
non vedo come possa risolvere il problema che ho posto.

Scusa giango, ma come ho detto nel mio post precedente, non avevo più capito dove si fosse presentato il problema. La mia proposta era valida qualora tu avessi riscontrata l'anomalia nell'ambiente di sviluppo. Ovviamente, non essendo così, non era necessario insistere in quello.

Comunque, alla luce degli ultimi avvenimenti, vedo che hai risolto e ciò mi fa estremamente piacere. Mi dispiace non esserti stato vicino come tu speravi; ciò perchè altri impegni casalinghi mi hanno tenuto e mi tengono tutt'ora lontano dal pc, però, come hai potuto notare, mi sono fatto ben sostituire.  ;D

Bando alle battute, tutto è bene quel che finisce bene e ... presto.  :D
 :ciao:
Titolo: Re: [RISOLTO] compilazione
Inserito da: giango - 30 Settembre 2014, 09:10:48
@Picavbg
Non c'è problema, tranquillo. E' ovvio che a volte chi è alle prime armi in gambas (come me) abbia difficoltà
a farsi capire da chi invece mastica la cosa da molto tempo.
Grazie comunque per la tua disponibilità.