On Sun, Nov 21, 2021 at 10:55 PM Bo Berglund via lazarus <
Show quoted text 17 lines
wrote:
On Sun, 21 Nov 2021 14:51:44 +0300, Mehmet Erol Sanliturk via lazarus
wrote:
>In this thread there is a point which is not clear for me :
>
>Compile
>
>(1) programs in SERVER by using Lazarus installed in SERVER
>(2) programs in SERVER by using Lazarus installed in WORKSTATIONS
I mean:
Compile programs on the server (Lazarus running on the server) for use on
any
Linux machine based on The PC architecture (AMD/Intel CPU).
I have read all of the messages in this thread starting from your initial email once more .
When you compile a program , it is possible to execute it another Windows machine by assuming
that the next Windows version is able to execute the program .
In the Linux ( or Unix ) world , this is NOT the case : Each Linux version of each Linux distribution has its OWN
library versions : There is NOT any standard library usage plan among the Linux versions or Linux distributions .
Therefore , it is very likely ( with respect to me : exactly ) that you will NOT be able to run your program in arbitrary Linux distributions IF YOU USE DYNAMICALLY LOADED LIBRARIES . I do not know the situation when you use statically
linked libraries . it is always not possible to use static linking because each library does NOT have static libraries .
When there is not a static library , you need to compile the respective sources to obtain a static library
WITH A SERIOUS CONSIDERATION OF STATIC LINKING POSSIBILITY BY STUDYING ITS LICENSE VERY CAREFULLY .
I can explain the situation with an example .
I have a Fedora Linux computer having a large number of repositories stored in a different disk from the Fedora 28 installed disk . During a country-wise electric fluctuation my Fedora 28 disk has been broken . I have installed Fedora 25 . Now ALL of the programs are NOT executable because of dynamically loaded ( *.so ) libraries by giving an error message about *.so library mismatch . I will install Fedora 35 . This will also require recompilation of ALL of the repositories one by one .
Therefore , my opinion is your plan WILL NOT work if you use *.so libraries , and try them to execute in different Linux computers with different *.so files . You may think that ALL of the *.so files of the libraries ARE the SAME : NO !
In your executable , the EXACT library version is recorded . During execution of the program , the *.so file is NOT loaded , but its EXACT matching name is searched : If it is NOT found , it is giving a message saying that the required exact *.so file is not found : *.so file with exact version number : for example : *.so.5.4.3 .
You need to check the static linking case whether it is possible to execute your program in different Linux ( versions , distributions ) . I do not know the situation based on experiments because in my NFS server , all of the clients have the same Fedora version .
Version of the NFS server may be different from the client versions ( assume NFS versions are the same or compatible ) . In the NFS server , there are the following directories alongside the source directories :
Executables_for_FreeBSD
Executables_for_Linux
Previously , also
Executables_for_Windows_XP
Executables_for_Windows_7
I could NOT be able to connect to Windows_7 . Due to this I have removed WIndows directories and I have discontinued
use of Windows .
From any client I am compiling ( Lazarus is installed in the client , BUT
you can install Lazarus in the server IF YOUR VERSIONS OF CLIENTS and SERVER ARE THE SAME in LINUX if you use *.so libraries and use it from the clients . If you use static linking , please check the result . Do not forget that you will not be able to install Lazarus for FreeBSD in server because it is Linux ( or different from the client ) ) programs by storing its executables into respective Linux or FreeBSD directory and execute the programs in any client from its respective directory .
As a result , my idea about your setup is : It requires adjusting parameters of the components to obtain a consistent work environment with respect to your needs and availability of your tools .
If you want to sell your program(s) to Linux user customers : My suggestion would be ( you may think a much more suitable method , or some other experts may suggest other ways ) :
Ask them to learn their Linux distribution and its version and hardware kind .
On a similar hardware and Linux distribution and version , install Lazarus , compile your program(s) from your source repository and supply your program(s) to your customer .
Mehmet Erol Sanliturk
Show quoted text 28 lines
>other than use of cross compilation .
I have never ever managed to set up a dev environment that could
cross-compile,
so I have to keep at least 3 different dev environments:
- Linux on Raspberry Pi (ARM)
- Linux on PC platform (AMD/Intel CPU)
- Windows on PC (AMD/Intel CPU)
By compiling on the target "metal" I am sure the programs will run
properly...
And for Linux I access the computers via VNC when I work. So I use my
Windows 10
box as the work environment always.
--
Bo Berglund
Developer in Sweden
--
_______________________________________________
lazarus mailing list
https://lists.lazarus-ide.org/listinfo/lazarus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20211122/ce92ae5a/attachment-0001.html>