On Sun, Nov 21, 2021 at 10:55 PM Bo Berglund via lazarus < lazarus@lists.lazarus-ide.org> wrote:
> On Sun, 21 Nov 2021 14:51:44 +0300, Mehmet Erol Sanliturk via lazarus > <lazarus@lists.lazarus-ide.org> 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 > >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 > lazarus@lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus >
-- _______________________________________________ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus