Build current FPC and Lazarus for Raspberry Pi OS
English (en) │
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.
- 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
- 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
svn 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/lazarus
git checkout lazarus_2_2_0
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.
./create_fpc_deb.sh fpc-src ~/pascal/fpc/. This builds the FPC source package in about 3 minutes:
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), replace
ppcarm. Look for the first
fijust 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 another
ifto a nested
if, with its corresponding
fi. Now save and exit.
./create_lazarus_deb.sh. This will build the Lazarus IDE Debian package
lazarus-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
*.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 for
gcclib. In the line below, replace
cpuarm. This removes error about missing
crtbegin.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.