Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: washburn - Marzo 15, 2015, 05:19:37 pm
-
Salve,
conosco bene la programmazione in Delphi occupandomene per lavoro, nel tempo libero mi piace aggeggiare con l'elettronica e Raspberry Pi (il B e B+ nel mio caso).
Con molto piacere ho scoperto l'esistenza dell'accoppiata FreePascal/Lazarus che ho installato sia nel mio pc (che userò per sviluppare) sia nel Raspberry (in cui compilerò il sorgente sviluppato sotto Windows).
Copiando il sorgente che sto sviluppando nel Raspberry mi sono accorto che a parità di Units installate (nello specifico me ne sono accorto con la unit "fpjson") le versioni sono diverse, pertanto ricompilando sotto Raspberry ho avuto segnalazione di diversi errori per function/procedure inesistenti nella versione per Raspberry.
Infatti la versione per Windows è la 1.2.6 con FPC 2.6.4, mentre quella nel Raspberry è la 0.9.30.4 con FPC 2.6.0.
Ho perso tutto il sabato seguendo vari tutorial trovati in rete su come installare manualmente versioni specifiche sia di FreePascal che di Lazarus ma nessuna è andata a buon fine.
Pertanto chiedo ai più esperti, come posso fare per allineare la versione attualmente installata nel Raspberry a quella in Windows?
Grazie, saluti.
Roberto
-
ciao
il problema è semplicemente che chi gestisce i pacchetti per le varie distro non riesce a stare dietro alle versioni sfornate dal team lazarus/freepascal.
ti posso dire come ho risolto il problema: installando un compilatore fpc manualmente che si affianchi a quello dell'installazione!
la versione di lazarus non è necessario che sia allineata a quella che hai su windows, ti serve solo il compilatore fpc. una volta installato il compilatore di cui hai bisogno basta compilare il progetto da linea di comando.
per l'occasione ho scritto una guida
http://www.lazaruspascal.it/index.php?page=138 (http://www.lazaruspascal.it/index.php?page=138)
nella guida troverai sia come installare una certa versione di fpc scaricandola dal web, sia come installare la trunck di fpc compilandola dai sorgenti (non badare al fatto che è una guida per gentoo: gli step sono universali)
Edit:
a chi dovesse interessare, ho anche fatto una pagina wiki ;)
http://wiki.freepascal.org/Install_fpc_on_Raspberry_with_Gentoo (http://wiki.freepascal.org/Install_fpc_on_Raspberry_with_Gentoo)
-
Dato che a furia di prove di installazione, cancellazione, reinstallazione...ero rimasto con poco spazio ed intenzionato a seguire la tua guida, ho deciso di riformattare l'SD e reinstallare Raspbian da zero.
Effettuato tutti i vari "apt-get update, upgrade" ho lanciato lo scaricamento di FPC e Lazarus.
Ma al "apt-get install fpc" appare un bel:
I seguenti pacchetti hanno dipendenze non soddisfatte:
fpc: Dipende: fpc-2.6.0 (=2.6.0-9+rpi1) ma non sta per essere installato
E: impossibile correggere i problemi ci sono pacchetti danneggiati bloccati
Ho provato anche un "apt-get dist-upgrade" ma non è cambiato nulla.
Cosa è successo? Manca qualcosa?
Grazie, saluti.
Roberto
-
ho trovato questo tread, prova a dare un'occhiata
http://www.raspberrypi.org/forums/viewtopic.php?f=34&t=88145 (http://www.raspberrypi.org/forums/viewtopic.php?f=34&t=88145)
-
Ho trovato la copia di un'immagine della SD fatta per un mio collega prima dell'installazione di tutto il pacchetto FPC/Lazarus, per cui l'ho ripristinata e non dovrebbe esserci il problema (lo vedrò stasera a casa).
Può essere fattibile l'installazione della FPC 2.6.4 seguendo la tua guida ed al termine l'installazione di Lazarus utilizzando il comando "apt-get install lazarus"?
Tutto sommato a me serve compilare con una versione sola del compilatore, la 2.6.4 appunto.
-
secondo me dovrebbe funzionare senza troppi problemi
al più, dopo lanciato lazarus, dovrai andare nelle opzioni a specificare la path del compilatore ma non credo neanche
facci sapere
-
Purtroppo la fase di compilazione si è arrestata per un errore contenuto nell'immagine allegata.
Da cosa può essere dipeso?
Sembra che non trovi dei percorsi ma almeno quelli trovati con il comando "find" (come da istruzioni) sono corretti.
-
da quello che vedo il linker non trova crtbegin.o e crtend.o
hai cercato questi file nel filesystem?
probabilmente hai lanciato il make senza sostituire le path con quelle del tuo sistema
nella sezione "Prima di compilare" vengono cercate delle path che poi devi sostituire in tutti e 2 i comandi della sezione "Costruiamo il compilarore"
detto questo guardando la tua immagine credo che ci sia qualcosa che non va: per compilare la trunk 2.7.1 stai usando il compilatore 3.1.1 (quella guida ha quasi un anno di vita)
credo che tu non abbia bisogno di compilare la 2.7.1 dai sorgenti ma puoi tentare di installare lazarus
-
Ho controllato i percorsi specificati e sono giusti controllando anche l'esistenza dei due files incriminati....ho anche lanciato 2 volte (ricontrollando di non aver commesso errori di digitazione) il "make" ma arriva alla fine con lo stesso errore.
Strano che ci sia il compilatore 3.1.1 perchè nell'immagine che ho ripristinato, sia FPC che Lazarus non sono mai stati installati...a meno che non abbia installato il compilatore qualche altro software (c'è il TKinter per Python).
Stasera provo ad installare Lazarus e vediamo cosa succede.
Ti faccio sapere, grazie.
Roberto
-
Allora...ho lanciato l'installazione di Lazarus (solo lazarus) ma ha installato FPC alla versione 2.6.0 pertanto sono daccapo un'altra volta.
Non se ne esce !
Possibile sia così complicato aggiornare sto programma??
Non so più cosa provare....suggerimenti?
-
evidentemente nel pacchetto ci sono tutti e 2, sia fpc che lazarus
visto che hai un backup della SSD puoi provare a sovrascrivere fpc:
1) cerca nel filesystem dov'è installato fpc (teoricamente in /usr/local)
2) elimina completamente la cartella (non preoccuparti dei file di configurazione, non li cercare neanche)
3) fai l'installazione manuale della nuova versione di fpc secondo la guida alla sezione "Installare manualmente l'ultima versione di fpc" e installala nello stesso posto della versione precedente
4) lancia lazarus
credo possa funzionare, facci sapere
PS: questi problemi purtroppo ci sono sempre, fpc ha la sua roadmap e le varie distro chiaramente non riescono a stare dietro agli aggiornamenti di tutti i software
se neanche questo funziona si potrebbe chiedere al team di raspbian con quali script fanno il pacchetto lazarus+fpc
-
Devo fermarmi alla fine del paragrafo che hai citato, o devo proseguire con "Installazione di subversion, Scaricamento trunk ecc."?
-
fermati li, svn serve se vuoi compilare dai sorgenti ma non ne hai bisogno se installi la versione già compilata
-
Allora...pare che finalmente sia riuscito ad installare (e configurare) il compilatore ed i sorgenti per la versione 2.6.4.
Si è presentato, però, un problema con la versione di Lazarus ( >:( ): la 0.9.30.4 purtroppo è troppo indietro rispetto alla 1.2.6 (lato Windows) e molti componenti e LCL non sono presenti.
Quindi...come aggiornare ora la versione di Lazarus?
-
non l'ho mai fatto personalmente ma credo che tu possa usare lo stesso sistema:
1) trova e scarica l'ultima versione di lazarus per arm
2) elimina la cartella dove c'è l'installazione attuale
3) rifai l'installazione
in effetti quando i pacchetti delle distro sono obsoleti creano un po' di casino...
ci vorrebbe un installer che tenga conto di queste cose
-
Ma se invece di installare Lazarus, visto che il compilatore ce l'ho alla versione 2.6.4, trasferisco semplicemente il sorgente (da Windows) e lancio "fpc <sorgente>", non dovrei ottenere l'eseguibile?
-
Ho provato ma la compilazione si ferma segnalando che non trova la unit "FileUtil" che è contenuta sotto la cartella "/usr/lib/lazarus/0.9.30.4/lcl".
Anche eseguendo "fpc" con l'opzione "-Fl /usr/lib/lazarus/0.9.30.4/lcl" ottengo lo stesso errore.
Pensavo che "tutto" fosse sotto FPC, invece alcuni componenti, come il TDividerBevel che uso, sono sotto Lazarus...quindi mi serve per forza anche lui :-\
-
in alternativa puoi copiare dalla tua installazione windows i sorgenti "lazarus" di cui hai bisogno dentro una folder "lib" del tuo progetto.
A questo punto copi i sorgenti sotto il raspberry e con fpc e i vari parametri di compilazione dovresti poter ottenere l'eseguibile.
-
Niente da fare, ho finito per copiare una quantità di files enorme ma ne manca sempre qualcuno.
Ho provato persino a partire da un'immagine pulita del Raspbian ma arrivo sempre al punto che riesco ad installare il compilatore 2.6.4, quando installo i sorgenti con "make install sourceinstall..." ad un certo punto la compilazione si ferma con un errore.
Non so più cosa fare...ho seguito una marea di guide, compresa quella di "michell computing" ma quando compilo dopo un bel pò si ferma con errori...sia FPC che Lazarus.
Cos'altro mi rimane da provare? Cross compiling da Windows ad ARM?
-
è un'alternativa ma in fatto di cross compiling non ti so essere d'aiuto
quale errore ricevi quando lanci "make install sourceinstall"?
-
L'errore che ricevo è "[build-stamp.arm-linux] Errore 2" (o qualcosa del genere) e la compilazione si interrompe.
Comunque per il cross compiling ho provato ad installare sia FPCUP che CodeTyphon con il risultato che non ne ha funzionato nemmeno uno !
Tutti e due danno errori durante la fase di configurazione...
Cercando in rete ho trovato molti che consigliavano di installare i "deb" di Jessie, ma c'è da compilare "roba" dopo averli installati che tu sappia?
-
per i deb non ci dovrebbe essere nulla da compilare
quello che mi pare strano è che anche con il solo compilatore (ma tutti i sorgenti) dovresti essere in grado di compilare il tuo progetto
visto che hai fatto molte prove ma non molli ti voglio segnalare questa immagine gentoo per raspberry
http://sourceforge.net/projects/pastoo/?source=navbar (http://sourceforge.net/projects/pastoo/?source=navbar)
è un po' datata e non c'è l'ambiente grafico ma ci sono 2 compilatori funzionanti: 2.6.4 e 2.7.1
se ci metti dentro i sorgenti di lazarus secondo me dovresti poter compilare
-
Avevo già valutato l'opzione di installare la Gentoo ma ho bisogno dell'interfaccia grafica perchè il progetto che sto sviluppando prevede un'interfaccia utente grafica.
In più utilizzo dei sensori di temperatura il cui "driver" viene installato a livello di sistema operativo per rendere disponibili i dati del sensore a tutti i programmi (in realtà programmi Python).
Prima di cimentarmi con il discorso "Jessie deb" (che ho visto sono una montagna da scaricare), è possibile secondo te "Importare" i componenti "LCL" dalla versione 1.2.6 di Lazarus alla 0.9.30.4?
In pratica è possibile tramite "Package-->Nuovo Componente" importare i componenti che sono assenti nella versione più vecchia?
-
credo che non valga neanche la pena di provare :)
devi insistere con l'installazione corretta
-
Per rpi2 Raspbian Jessie (versione febbraio 2016)
Compilare Freepascal Compiler 3.0.0
sudo apt-get update
sudo apt-get install -y fpc
wget ftp://ftp.hu.freepascal.org/pub/fpc/dist/3.0.0/source/fpc-3.0.0.source.tar.gz
tar -zxvf fpc-3.0.0.source.tar.gz
cd fpc-3.0.0/
make all OPT="-dFPC_ARMHF -O-"
sudo make install OPT=-dFPC_ARMHF PREFIX=/usr
sudo mv /etc/alternatives/ppcarm /etc/alternatives/ppcarm2.6.4
sudo ln -sf /usr/lib/fpc/3.0.0/ppcarm /etc/alternatives/ppcarm
sudo make install sourceinstall OPT=-dFPC_ARMHF PREFIX=/usr
cd ..
rm -rf fpc-3.0.0
sudo ln -sf /usr/share/src/fpc-3.0.0/fpc /usr/share/fpcsrc/3.0.0
Compilare Lazarus
sudo apt-get update
sudo apt-get install -y libx11-dev libgdk-pixbuf2.0-dev libcairo2-dev gir1.2-coglpango-1.0 libpangox-1.0-dev xorg-dev libgtk2.0-dev libpango1.0-dev
wget "ftp://ftp.hu.freepascal.org/pub/lazarus/releases/Lazarus Zip _ GZip/Lazarus 1.6/lazarus-1.6.0-0.tar.gz"
tar -zxvf lazarus-1.6.0-0.tar.gz
mv lazarus lazarus1.6
cd lazarus1.6
make all OPT="-dFPC_ARMHF"
make clean
Lanciare Lazarus
./startlazarus --pcp=~/.lazarus1.6
L'opzione --pcp=~/.lazarus1.6 serve per creare delle impostazioni diverse a seconda della versione di Lazarus che si utilizza (in pratica crea nella home dell'utente un file di configurazione .lazarus1.6.
Per eliminare questi warning di compilazione:
project1.lpr(22,0) Warning: "crtbegin.o" not found, this will probably cause a linking failure
project1.lpr(22,0) Warning: "crtend.o" not found, this will probably cause a linking failure
editare il file fpc.cfg
sudo leafpad /etc/alternatives/fpc.cfg
ed aggiungere la seguente riga nella sezione # searchpath for libraries:
-Fl/usr/lib/gcc/arm-linux-gnueabihf/4.9/
Se hai un Raspberry Pi B+ puoi scaricare ed installare FPC 2.6.4 e Lazarus 1.2.4
Disinstalla le vecchie versioni di Lazarus e Freepascal eventualmente già installate sul tuo Raspberry:
sudo apt-get purge fpc
sudo apt-get purge lazarus
e cancella la cartella .Lazarus che trovi nella home del tuo profilo utente (ad esempio in /home/pi/).
Scarica tutti i file relativi a queste due versioni da qui in due cartelle diverse:
http://archive.raspbian.org/raspbian/pool/main/f/fpc/
http://archive.raspbian.org/raspbian/pool/main/l/lazarus/
e poi installa prima FPC e poi Lazarus andando nella cartella giusta e dando questo comando:
sudo dpkg -i *.deb
Se hai invece un Raspberry Pi 2 puoi installare fpc 2.6.4 nello stesso modo e poi scaricare i sorgenti della versione 1.2.6 di Lazarus e compilarla:
http://sourceforge.net/projects/lazarus/files/Lazarus%20Zip%20_%20GZip/Lazarus%201.2.6/lazarus-1.2.6-0.tar.gz/download
crea una cartella mettici il file .gz e da riga di comando vai nella cartella e dai il comando:
tar -zxvf lazarus-1.2.6-0.tar.gz
Per compilare hai bisogno di dei pre-requisiti:
sudo apt-get update
sudo apt-get install libx11-dev libgdk-pixbuf2.0-dev libcairo2-dev lpango-1.0 libpangox-1.0-dev xorg-dev
sudo aptitude install libgtk2.0-dev libgdk-pixbuf2.0-dev libpango1.0-dev
quindi entra nella cartella lazarus dove sono i sorgenti e compila con:
make all OPT=-dFPC_ARMHF
sudo make install OPT=-dFPC_ARMHF PREFIX=/usr/local
-
Grande !!
Finalmente ha funzionato !
Ho provato a compilare il sorgente sviluppato in Windows ed ha compilato senza errori.
Non so come ringraziarti...se devo essere sincero ero lì lì per abbandonare la cosa.
Ora posso continuare il mio progetto...
Grazie,
Roberto
-
mica male aru come primo post ;)
grazie e benvenuto :)
-
Beh se qualcun altro avrà lo stesso problema, ora sa come fare !
-
Arieccomi a stressare ;D
Allora...ho acquistato un Pi 2, ho seguito le tue istruzioni per installare FPC+Lazarus e tutto è andato bene ma....al termine di tutta la procedura non trovo l'icona di Lazarus nel folder "Programmazione" (ho l'ultima versione della Wheezy).
Sono andato a cercare la cartella di Lazarus in "/usr/local" ed in effetti c'è...ho provato quindi a lanciare "startlazarus".
L'IDE parte ma compare un pop-up che riporta "Compiler "/usr/bin/fpc doesn't support target arm-linux" anche se poi compilando un qualsiasi programma non da errori.
Manca qualcosa? COme faccio per creare uno "shortcut" a Lazarus nel folder "Programmazione"?
Grazie, ciao.
Roberto
-
Se hai installato i pacchetti .deb già compilati della 1.2.4 Lazarus parte da terminale con il comando startlazarus-1.2.4
Se hai compilato tu direttamente una versione di Lazarus (ad esempio la nuova 1.4) allora puoi lanciare lo startlazarus che trovi nella cartella dove hai compilato i sorgenti, magari con il parametro aggiuntivo che differenzia le impostazioni utente a seconda della versione (che permette quindi di avere più versioni di Lazarus installate che utilizzano proprie configurazioni utente):
ad esempio con
/home/pi/Lazarus/1.4/lazarus/startlazarus --pcp=~/.lazarus_1.4
Per creare l'icona, se hai utilizzato i .deb della 1.2.4 dovrebbe bastare riavviare il sistema.
Altrimenti per l'icona io ti consiglio di crearne una direttamente sul desktop, è più facile, dai come path di avvio un comando analogo a quello che vedi sopra (Lazarus/1.4/lazarus è il path dove trovo i sorgenti che ho compilato).
Altrimenti se vuoi l'icona sotto Programming devi creare a mano un file .desktop seguendo le indicazioni che trovi qui http://wiki.lxde.org/en/Main_Menu e che puoi mettere in /home/pi/.local/share/applications.
-
Sono andato a cercare la cartella di Lazarus in "/usr/local" ed in effetti c'è...ho provato quindi a lanciare "startlazarus".
L'IDE parte ma compare un pop-up che riporta "Compiler "/usr/bin/fpc doesn't support target arm-linux" anche se poi compilando un qualsiasi programma non da errori.
Lancia Lazarus come ho indicato nel post precedente.
Se il messaggio persiste:
per prima devi aver installato la versione di fpc 2.6.4 che trovi nel repository di raspbian (quella per arm che trovi nel repository del progetto fpc di sourceforge non è per il raspberry che è un armhf invece che arm).
Nel wiki di Freepascal a proposito di questo messaggio si trova questo:
http://wiki.freepascal.org/Cross_compiling#Errors_like_compiler_.22.2Fusr.2Fbin.2Ffpc.22_does_not_support_target_arm-linux
Quindi se il messaggio persiste lanciando Lazarus nel modo giusto ed hai installato la versione di fpc 2.6.4 valida per Raspberry ti consiglio di disinstallare fpc e reinstallarlo (vai nella cartella dove hai i .deb di fpc e prima esegui sudo dpkg -P *.deb per disinstallare e pulire, e poi esegui sudo dpkg -i *.deb).
-
Grazie per i suggerimenti...ho creato la shortcut per lanciare Lazarus sul desktop e tutto parte regolare, a parte la segnalazione relativa al compilatore FPC.
La versione installata è la 2.6.4, ed è la stessa che ho installato su di un altro Raspberry (B+) su cui gira la versione 1.2.4 di Lazarus che si apre, però, senza segnalazioni.
Visto che, comunque, compilando non da errori ed il programma gira regolarmente, per ora penso di lasciare tutto così.
Grazie ancora, saluti.
Roberto
-
a parte la segnalazione relativa al compilatore FPC.
La versione installata è la 2.6.4, ed è la stessa che ho installato su di un altro Raspberry (B+) su cui gira la versione 1.2.4 di Lazarus che si apre, però, senza segnalazioni.
Io ho sia un B+ che un PI2 e su tutte e due ho installato la versione 2.6.4 che trovo nel repository di Raspbian (vedi alcuni post sopra) e non ho il tuo problema.
Sul PI2 ho sia la 1.2.4 (precompilata) che la 1.2.6 e la 1.4 (compilate da me).
Prova a cancellare la cartella .lazarus che trovi nella home dell'utente e riavvia Lazarus.
In questa cartella vengono salvate delle impostazioni temporanee, se la cancelli vengono ricreate.