Autore Topic: [RISOLTO] compilazione  (Letto 1967 volte)

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
[RISOLTO] compilazione
« il: 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.
« Ultima modifica: 29 Settembre 2014, 12:30:10 da giango »

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: compilazione
« Risposta #1 il: 23 Settembre 2014, 18:57:01 »
Una macchina virtuale?

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #2 il: 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.

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: compilazione
« Risposta #3 il: 24 Settembre 2014, 17:13:37 »
Fornire l'eseguibile?
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #4 il: 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.

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: compilazione
« Risposta #5 il: 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.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #6 il: 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.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: compilazione
« Risposta #7 il: 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:
:ciao:

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #8 il: 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.

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #9 il: 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......!

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: compilazione
« Risposta #10 il: 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:



:ciao:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: compilazione
« Risposta #11 il: 27 Settembre 2014, 00:27:19 »
Infatti Linux è case sensitive. Prova da terminale semplicemente a cambiare directory ignorando maiuscole e minuscole, se ci riesci... :)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #12 il: 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.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: compilazione
« Risposta #13 il: 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:
:ciao:

Offline giango

  • Grande Gambero
  • ***
  • Post: 164
    • Mostra profilo
Re: compilazione
« Risposta #14 il: 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?