Tips'n Tricks

cross compile

x creare exe a 32 bit

  • installare lazarus-4.4-fpc-3.2.2-cross-i386-win32-win64.exe

x creare exe per linux a 64bit (rif: leybabronstain.ucoz.com/blog/ispolzovanie_krosskompiljacii_v_lazarus/2018-03-03-24)

si necessita della cartella con le librerie per linux qui:

lazarusdir\fpc\3.2.2\bin  \x64_86-linux

per creare la dir:

scaricare questo

aggiornare i tags

andare nel tab "cross"

scegliere x86-64 e linux a dx

esso compila e produce questa dir C:\fpcupdeluxe\cross\bin

che va copiata sotto linux


Quindi, finalmente ho trovato il tempo per la cross-compilazione. Non che ne avessi davvero bisogno (penso ancora che sia più sicuro compilare un progetto sul sistema operativo per cui è stato progettato), ma ero semplicemente curioso. La trattazione della cross-compilazione su Wiki (soprattutto su Windows) è piuttosto generica e non aggiunge molta chiarezza.

Esiste una distinzione tra la piattaforma host (la build di Lazarus su cui è costruito il progetto) e la piattaforma target (il sistema operativo con una specifica profondità di bit per cui è costruito il progetto). Descriverò il processo di creazione di un crosscompilatore per Linux_i386 (target) su una build di Lazarus per Win-x32 (host) e per Windows x32 (target) su una build di Lazarus per Linux i386.
 

 1. Compilazione incrociata su Windows.


1. Per prima cosa, scarica da qui ed esegui l'ultima versione del fantastico programma fpcupdeluxe , con la profondità di bit richiesta e il sistema operativo corrispondente.

 

2. Determinare la directory in cui verrà scaricato il codice sorgente e verranno compilati i file binari (ad esempio, D:\Archive\development\fpcup )
3. Nella finestra "Versione FPC", seleziona "trunk" e clicca sul pulsante "Solo FPC" (se non hai ancora installato Lazarus, puoi installarlo contemporaneamente selezionando il tipo di build appropriato nella finestra "Versione Lazarus" e cliccando su "Installa/Aggiorna FPC + Laz")

4. Dopo aver installato FPC (e Lazarus, se non era installato), è necessario scaricare i sorgenti e le librerie e anche compilare i binari per la compilazione incrociata

Seleziona la profondità di bit e il sistema operativo richiesti (ricorda, mi sono prefissato l'obiettivo di creare un cross-compilatore per Linux-i386) e fai clic sul pulsante "Installa cross-compilatore".

Durante il download e il successivo processo di compilazione, fpcupdeluxe si lamenterà della mancanza di utilità di compilazione del cross-compilatore e ti chiederà di scaricarle ("La compilazione di un cross-compilatore non è riuscita a causa della mancanza di strumenti incrociati. Fpcupdeluxe può provare a scaricarli se disponibili! Vuoi continuare?")

Ci accordiamo e ripetiamo il processo di compilazione. È piuttosto dispendioso in termini di tempo, quindi siate pazienti. Una volta completato il processo, vedrete dove sono stati installati i binari del cross-compilatore nel pannello informativo:

Nuovo tentativo di creazione di un cross-compilatore per Linux-i386
fpcupdeluxe: info: TAny_linux-i386: trovate le utilità binarie corrette nella directory D:\Archive\development\fpcup\cross\bin\i386-linux
fpcupdeluxe: info: TAny_linux-i386: trovata la libreria corretta nella directory D:\Archive\development\fpcup\cross\lib\i386-linux 

5. Ora configuriamo Lazarus. Guardando al futuro, dirò che per la cross-compilazione è meglio usare una build IDE separata per evitare il fastidio di dover cambiare ( come fare in modo che l'IDE salvi le impostazioni in una cartella separata ). Per specificare i percorsi dei file binari, aprire le impostazioni Strumenti --> Opzioni --> Ambiente --> File

Per l'eseguibile del compilatore, selezionare D:\Archive\development\fpcup\fpc\bin\i386-win32\ppcross386.exe Per la directory sorgente FPC, selezionare D:\Archive\development\fpcup\fpcsrc Per l'eseguibile "Make", selezionare D:\Archive\development\fpcup\fpc\bin\i386-win32\make.exe Per configurare il debugger, vai qui: Strumenti --> Opzioni --> Ambiente --> Debugger  


seleziona GNU debugger (gdb) seleziona il percorso D:\Archive\development\fpcup\fpcbootstrap\gdb.exe


Chiudere la finestra con le impostazioni dell'ambiente. 6. E infine, crea un nuovo progetto, apri le sue impostazioni Progetto --> Opzioni progetto --> Opzioni compilatore --> Percorsi , dove specifichiamo il percorso alle librerie per la compilazione del progetto



per Librerie (-Fl) seleziona d:\development\fpcup\cross\lib\i386-linux (verrà visualizzato ..\..\..\development\fpcup\cross\lib\i386-linux ) Specificare il sistema operativo di destinazione e il bit del processore per cui il progetto è compilato: Progetto --> Opzioni progetto --> Opzioni compilatore --> Configura e destinazione






  • per il sistema operativo di destinazione (-T) seleziona Linux
  • Per la famiglia di CPU di destinazione (-P), selezionare i386


Se dopo aver specificato le librerie (-Fl) il collegamento ai widget del sistema operativo di destinazione non viene installato automaticamente, installarli manualmente Progetto --> Opzioni progetto --> Opzioni compilatore --> Aggiunte e sostituzioni

 

  • Nella casella combinata "LCLWidgetType", seleziona "Valore "GTK2".



Ora compila il progetto (preferibilmente con <Shift> + <F9> , altrimenti riceverai un errore formale del debugger). Al termine del processo di compilazione, vedremo un risultato positivo nella finestra del messaggio.

 

Testiamo infine il binario risultante sul sistema operativo di destinazione