Closed zen010101 closed 2 weeks ago
Ensure you got the latest static release from mORMot, and also the latest cross-compiler binaries if you use FpcUpDeluxe.
Yes, I downloaded it from: https://synopse.info/files/mormot2static.7z . Here is the file information:
Name/Ext Size Date Attr
libcurl.a 6,434,704 19/02/15 23:25 ----
libgcc.a 854,866 20/06/15 20:22 ----
sqlite3.o 2,607,576 24/01/02 19:47 ----
cross-compiler binaries are downloaded by FpcUpDeluxe too.
Ensure you deleted your cross-compiler and its cross-compiler binaries of FpcUpDeluxe, to download and install the latest version.
If it does not work, the issue come from the FpcUpDeluxe cross-compiler binaries from Windows to Linux aarch64, which are too old.
We build and maintain for aarch64 daily in our LUTI integration server (using a Mac M1 VM): https://luti.tranquil.it/get_folder_result/15c51a77-36d3-4ed7-b9c9-f18ff1931831/dGlzLXRlc3QtbW9ybW90Mi9tYWNfYXJt It uses the fpcupdeluxe cross-compiler from Linux x86_64 to Linux aarch64.
So you can always switch to the cross-compiler from Linux x86_64 to Linux aarch64.
See https://github.com/synopse/mORMot2/issues/247 https://synopse.info/forum/viewtopic.php?id=6738 https://synopse.info/forum/viewtopic.php?pid=32417
I tried using the latest cross-compiler and its corresponding binaries of FpcUpDeluxe, but unfortunately, it failed to link the project as well. It's quite disappointing.
Perhaps we should consider switching to Linux x86_64 in order to cross-compile for my Linux aarch64 target.
I just tried to setup, from scratch, the latest FPC + Lazarus versions using FpcUpDeluxe on Windows. I got the same error.
So it seems to be a FpcUpDeluxe problem: its cross-platform libraries for linux-aarch64 are too old. If you switch to Linux x86_64, it should work.
Consider using WSL under Windows if you don't want to setup a VM.
I have finally fixed it on my Windows.
I have decided to copy the files from a true aarch64 device to the directory located at \laz32\cross\lib\aarch64-linux. Here are my steps:
aarch64-linux
. Everything works fine!There are some files that were not found on my aarch64 device, just like these:
/bin/scp: /usr/lib/aarch64-linux-gnu/crtbegin.o: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/crtbeginS.o: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/crtend.o: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/crtendS.o: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/lib64: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libdouble-conversion.so.1: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libffi.so.6: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libfluidsynth.so.1: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libgcc.a: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libicudata.so.60: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libicui18n.so.60: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libicuuc.so.60: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libjpeg.so.8: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libmad.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libmodplug.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libmysqlclient.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libmysqlclient.so.20: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libnss_nis.so.2: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libnss_nisplus.so.2: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libogg.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libpthread_nonshared.a: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libQt5Pas.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libQt5Pas.so.1: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libreadline.so.7: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libsndio.so.6.1: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libssp_nonshared.a: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libtinfo.so.5: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libUMP.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libvorbis.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libvorbisenc.so: No such file or directory /bin/scp: /usr/lib/aarch64-linux-gnu/libvorbisfile.so: No such file or directory
I seached some of them on my device, not exists on the entire disk. So far, I haven't encountered any problems yet.
OS: Windows 11 23H2 FPC: 3.2.2 Lazarus: 3.2 i386-win32 Target: Linux aarch64
when I compiled the project, it met this linking error:
Debug: D:\laz32\cross\bin\aarch64-linux\aarch64-linux-gnu-ld.exe: D:\laz32\ccr\mORMot2\static\aarch64-linux....\static\aarch64-linux\sqlite3.o:(.data+0x268): undefined reference to `fcntl64'