Build current FPC and Lazarus for Raspberry Pi OS
Raspberry Pi OS Bullseye (based on Debian 11 Bullseye) has FPC and Lazarus available in the repositories, but they suffer from the same "design decisions" that don't allow for a nice experience, namely the smooth IDE rebuilding capability based on source packages that is possible with FPC/Lazarus official .deb packages vs the crippled experience with the official Debian/Raspberry Pi OS packages. One wishes there were official FPC/Lazarus packages for Raspberry Pi OS as there are for Intel Debian/Ubuntu, which are also frequently updated; not being that the case (at least for now), this page shows the steps for building your own FPC, FPC-source and Lazarus packages for Raspberry Pi OS. Example shows steps for Lazarus 2.2.0 which includes FPC 3.2.2, most recent at the time of writing. Adjust accordingly.
Requirements:
- Raspberry Pi 4 Model B, 4 GB (less memory models would require swap), with appropriate cooling (author uses aluminum case that doubles as heatsink) to avoid throttling due to excessive heat. Raspberry Pi 400 works too.
- Latest Raspberry Pi OS Bullseye fully updated
Steps:
- Install subversion:
sudo apt install subversion - Install Free Pascal compiler:
sudo apt install fp-compiler - Test if all ok:
fpc abcd. This invokes the just installed compiler trying to compile a non-existent file (abcd). A multiline message will be shown including the compiler version. - Non-step note: the following steps are mostly based on this
- Install development libraries:
sudo apt install libgtk2.0-dev libgpm-dev libncurses-dev mkdir ~/pascalcd ~/pascalsvn checkout https://github.com/fpc/FPCSource/tags/release_3_2_2 fpc, you have to be online for this and the next step to work.git clone https://gitlab.com/freepascal.org/lazarus/lazaruscd lazarusgit checkout lazarus_2_2_0cd tools/install- Edit
create_fpc_deb.sh, look for line with the following content:arm) ppcbin=arm; FPCArch=arm;;, (currently line 109). Copy and paste this line below itself, so it will appear twice. Edit this copy to read like this:armhf) ppcbin=arm; FPCArch=arm;;. Now save the changes and exit. - Run the script:
./create_fpc_deb.sh fpc ~/pascal/fpc/. This will compile the latest compiler using the compiler included with Bullseye. It takes about 11 minutes. A.debfile will be created:fpc-laz_3.2.2-yymmdd_armhf.deb; the exact name will be shown at the end of the compilation. - Uninstall Free Pascal compiler:
sudo apt purge fp-compiler && sudo apt --purge autoremove - Install the just created FPC Debian package:
sudo dpkg -i ~/pascal/lazarus/tools/install/fpc-laz_3.2.2-yymmdd_armhf.deb && sudo apt install -f. Check if it works:fpc abcdshould show the newly installed FPC compiler. cd ~/pascal/lazarus/tools/install./create_fpc_deb.sh fpc-src ~/pascal/fpc/. This builds the FPC source package in about 3 minutes:fpc-src_3.2.2-yymmdd_armhf.deb.- Edit
create_lazarus_deb.sh, look for line with the following content:echo "$Arch is not supported.", (currently line 86). Copy the 3 lines above it and paste them just below themselves: at this time it is copy lines 83 to 85 and paste them between lines 85 and 86. In the just pasted lines (lines 86-88), replacesparcwitharmhf, andppcsparcwithppcarm. Look for the firstfijust below; copy and paste it below itself (copy line 91 below itself, so line 91 and 92 read the same). For you coders out there, you are adding anotherifto a nestedif, with its correspondingfi. Now save and exit. ./create_lazarus_deb.sh. This will build the Lazarus IDE Debian packagelazarus-project_2.2.0-0_armhf.deb. It will take about 15 minutes.- Install the FPC source and Lazarus packages:
sudo dpkg -i fpc-src_3.2.2-yymmdd_armhf.deb lazarus-project_2.2.0-0_armhf.deb && sudo apt install -f - Save
*.debto another location, to reinstall later if needed or to share with friends: remember this is free software. Mine are here: https://app.box.com/s/7g54gml6p9bfn10157go430oyputw2au (here you will also find 64-bit packages for the recently released Raspberry Pi OS 64-bit, with copies of the two files modified in this article, with 64-bit edits). cd && rm -rf ~/pascal ~/tmp- Edit as root
/etc/fpc.cfg. Search forgcclib. In the line below, replacecpuaarch64withcpuarm. This removes error about missingcrtbegin.owhen building apps. - Change the debugger backend to gdb: Tools/Options/Debugger backend.
You can now finally enjoy your fully working, fully up to date Lazarus. Find it in the Programming section of the Raspberry menu. Now try to install a package, for example lazreport; it will work!
DISCLAIMER: these are UNOFFICIAL packages created from modified official sources. DO NOT ASK FOR SUPPORT ANYWHERE, neither on the forums or with the author of this article; use at your own risk.
From the Free Pascal wiki, page "Build current FPC and Lazarus for Raspberry Pi OS", as it stood on 2022-02-03 after a change by Ottod, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
