This is a pretty easy install, some bug fixes have to be done and you have to change some files – then you are up and running with the beautiful Lazarus – a programming language that never dies.
Written by Morten Steenberg. 2022 AUG
We assume you have installed Manjaro 22.06 distro on your Khadas VIM3 (I have my own help for this for you) and updated the system, so this is up to date!
1. Install Fpc, Fpc-src, and Lazarus via the regular Software manager built in Manjaro. For the moment this is version 3.2.2 for Fpc and 2.2.0 for the Lazarus (Lazarus-qt5 version). I mean, there is no point in struggling to get the latest version, very small changes, so you should accept these versions – work and compile fine!
2. The compiler is broken, so you have to fix up something. You have to locate the file cprt0.as on your computer. Be aware, that you have 10’s of these files in your system – so NOT search for this file, go to the right folder, explained under here!
3. Travel/goto to this folder on your Manjaro with console, first:
cd /usr/lib/fpc/src/rtl/linux/aarch64
4. Enter this in your console:
sudo nano ./cprt0.as
Or if you prefer Kate instead: kate ./cprt0.as…
5. Then goto about line 40 from the top in the file, you will find this section :
/* __libc_start_main(main, argc, argv, init, fini, rtld_fini, stack_end) */ adrp x0,:got:PASCALMAIN ldr x0,[x0,#:got_lo12:PASCALMAIN] adrp x3,:got:__libc_csu_init ldr x3,[x3,#:got_lo12:__libc_csu_init] adrp x4,:got:__libc_csu_fini ldr x4,[x4,#:got_lo12:__libc_csu_fini] bl __libc_start_main
Mark this section over in the file, and replace it with this :
/* __libc_start_main(main, argc, argv, init, fini, rtld_fini, stack_end) */ adrp x0,:got:PASCALMAIN ldr x0,[x0,#:got_lo12:PASCALMAIN] mov x3,xzr mov x4,xzr bl __libc_start_main
Then save the file and leave the nano or kate editor and return to the console!
6. Then travel one folder back/up
cd ..
7. And enter this (this will compile this C/ASM code in the file cprt0.as):
sudo make CPU_TARGET=aarch64 OS_TARGET=linux cprt0.o
8. Then copy the file to this location, like this:
sudo cp /usr/lib/fpc/src/rtl/units/aarch64-linux/cprt0.o /usr/lib/fpc/3.2.2/units/aarch64-linux/rtl/
You should now have the ability to Compile in Lazarus!
9. Fix the crtbegin/crtend warning when you compile. Be sure you have installed the GCC compiler before you proceed here (Install gcc – The GNU Compiler Collection -C and C++ frontend in Manjaro Software Manager, if you have not):
Then, check what version of gcc that’s installed in your system:
cd /usr/lib/gcc/aarch64-unknown-linux-gnu/
Then type
ls
Probably you see a folder with the name 12.1.0. This is the folder you should get fpc to look after. This will get rid of the crtbegin/crtend warning! To fix this you have to update the fpc.cfg file. You should find the file in /etc. Goto this folder:
cd /etc
Then edit the file:
kate ./fpc.cfg
Travel/goto about line 178 in the fpc.cfg file, you will find a header with the name # path to the gcclib – here is the error/problem! Add a new line after the last -Fl line and before #endif, with (about line 182 in the fpc.cfg file…) this line of text:
-Fl/usr/lib/gcc/aarch64-unknown-linux-gnu/12.1.0
Save the file. Important if your system has another version of gcc, you have to alter/change the -Fl line to the right version/number!
Now you can compile without any strange warnings!
10. A better dook container for Lazarus. At last, I prefer a docking system in the Lazarus Ide, activate the already light preinstalled packages with (Lazarus Ide→Package→Install/uninstall packages) :
AnchorDocking 1.0
AnchorDockingDsgn 1.0
Then “Save and rebuild IDE”
Happy programming with Fpc/Lazarus.