You are not logged in.
Hi,
Trying to compile this sample mORMot2-2.0.stable/ex/mvc-blog/MVCServerFirebirdZeos.dpr on Linux, I get this error:
Messages, Warnings: 1
Warning: other unit files search path (aka unit path) of "zcomponent 8.0" contains "/home/thierrybo/Sys/Lazarus.projets/Composants/zeoslib-code-0-r8027-branches-8.0-patches/src/component", which belongs to package "zcomponentdesign"
Compile Project, Mode: Default, CPU: i386, Target: exe/MVCServerFirebirdZeos: Exit code 1, Errors: 3, Hints: 3
Hint: Start of reading config file /home/thierrybo/.local/opt/lazarus_fixes_fpcupdeluxe/fpc/bin/x86_64-linux/fpc.cfg
Hint: End of reading config file /home/thierrybo/.local/opt/lazarus_fixes_fpcupdeluxe/fpc/bin/x86_64-linux/fpc.cfg
Verbose: Free Pascal Compiler version 3.2.3-707-g15194c6ee9 [2023/04/02] for i386
Verbose: Copyright (c) 1993-2021 by Florian Klaempfl and others
Verbose: Target OS: Linux for i386
Verbose: Compiling MVCServerFirebirdZeos.dpr
Verbose: Compiling MVCModel.pas
Verbose: Compiling MVCViewModel.pas
MVCViewModel.pas(286,25) Hint: Converting the operands to "TID" before doing the multiply could prevent overflow errors.
Verbose: Writing Resource String Table file: MVCViewModel.rsj
MVCServerFirebirdZeos.dpr(30,20) Verbose: Unit "zdbc" not used in MVCServerFirebirdZeos
Verbose: Linking /home/thierrybo/Sys/Lazarus.projets/Composants/mORMot2-2.0.stable/ex/mvc-blog/exe/MVCServerFirebirdZeos
Error: /home/thierrybo/.local/opt/lazarus_fixes_fpcupdeluxe/cross/bin/i386-linux/i386-linux-ld: /home/thierrybo/Sys/Lazarus.projets/Composants/mORMot2-2.0.stable/ex/mvc-blog/lib/i386-linux/MVCViewModel.o: in function `.La6':
Error: MVCViewModel.pas:(.debug_info+0x316): undefined reference to `DBG2_$MORMOT.REST.MVC_$$_IMVCAPPLICATION'
MVCServerFirebirdZeos.dpr(94,1) Error: Error while linking
MVCServerFirebirdZeos.dpr(94,1) Verbose: There were 1 errors compiling module, stopping
Verbose: Compilation aborted
Verbose: /home/thierrybo/.local/opt/lazarus_fixes_fpcupdeluxe/fpc/bin/x86_64-linux/ppcross386 returned an error exitcode
This is a cross compile 64->32 but i get the same error in native 64:
Error: /usr/bin/ld : /home/thierrybo/Sys/Lazarus.projets/Tests/Mormot/mormot2/mvc-blog-mysql/lib/x86_64-linux/MVCViewModel.o : dans la fonction « .La6 » :
Error: MVCViewModel.pas:(.debug_info+0x388) : référence indéfinie vers « DBG2_$MORMOT.REST.MVC_$$_IMVCAPPLICATION »
I have no error on Win32/Win64
My Lazarus/fpc are the same version on Windows and Linux, same Mormot2 and Zeos 8
Lazarus 2.2.7 (rev lazarus_2_2_6-1-gada7a90f86) FPC 3.2.3 x86_64-linux-qt5
Lazarus 2.2.7 (rev lazarus_2_2_6-1-gada7a90f86) FPC 3.2.3 i386-win32-win32/win64
Last edited by thierrybo (2023-05-03 14:00:32)
Offline
Sounds like a configuration error in your build chain.
Do other projects cross-compilation work?
First try with https://github.com/synopse/mORMot2/commit/0740e4c0
You may:
0) Clean and re-build the project (deleting the .o files).
1) Try with another version of FPC.
2) Rebuild FPC and Lazarus.
Offline
Well i'am a bit confused for the moment.
On my current Linux Lazarus/FPC setup, I have the same error for Linux 32/64 with mormot 0740e4c0, even after a clean rebuild of the project and Mormot2.
I have a test virtual Machine on Ubuntu 20.04 LTS with a bare bone default Lazarus/fpc setup (with fpcupdeluxe) with the same version as my local setup. I have the same error for Linux 32/64 with mormot 0740e4c0.
On the virtual machine I added a new fpcupdeluxe setup with the same Lazarus version but with freepascal trunk (Lazarus 2.2.7 (rev lazarus_2_2_6-1-gada7a90f86) FPC 3.3.1 x86_64-linux-gtk2). With this setup and mormot 0740e4c0, cross compiling to native linux64 worked once, then I cross compiled to linux32 and this gave me the same error "Error: MVCViewModel.pas:(.debug_info+0x33c): undefined reference to `DBG2_$MORMOT.REST.MVC_$$_IMVCAPPLICATION'".
Then every new attempt to build for linux64 native never worked again, even using "Clean up an build with all options checked" (deletes project *. *.ppu, deletes mormot, zeos and FCL .o .*ppu ..).
Offline
I am also confused, because I don't have any trouble here on Linux/Debian.
My version is
Free Pascal Compiler version 3.2.3-702-g05480071e2 [2022/12/30] for x86_64
Sounds like a compiler/linker problem, or a configuration problem.
Don't use the trunk but try plain 3.2.0.
Offline
AHH, I will kill myself.
In my test virtual machine with FPC from trunk and mormot2 0740e4c0, I just discovered this is the "Default" build option that raise the error.. Changing to Release or Debug works in both native linux64 and linux32 !
Back to my normal setup with Lazarus/FPC stable/fixes and mormot2-stable, and the project compile fine too now for both target CPU ....
Offline
Maybe the diff may help
Offline
My best guess is that mixing DebugInfoType is what made the linking fail.
The very same debug information should be set for both mORMot packages and the project.
Offline
Indeed, changing DebugInfoType on the Default profile to
Automatic, Dwarf3, stabs -> OK
Dwarf2, Dwarfs with sets -> NOK
Offline