Stikkordarkiv: programming

How to Install Lazarus on Manjaro 22.06 with your VIM3


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.