Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Wayne Sherman via lazarus
On Thu, Mar 16, 2023 at 4:36 PM Bo Berglund wrote:
> when I try to run it:
> videosplitcmb: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found
> (required by videosplitcmb)

There was a discussion and related bug report on this issue:

https://forum.lazarus.freepascal.org/index.php/topic,5.0.html
https://gitlab.com/freepascal.org/fpc/projects/-/issues/3
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Kostas Michalopoulos via lazarus

On 3/17/23 15:19, Sven Barth via lazarus wrote:
Depending on the used units static linking is simply not an option. E.g. 
the database units load the database libraries dynamically and thus the 
C library must not be linked statically then.


glibc officially highly discourages static linking anyway.

As a sidenote, with gcc it is easy to cherry pick which libraries will 
be linked statically and which dynamically, but from what i can tell FPC 
doesn't seem to provide such an option - there is only an all or nothing 
approach as FPC generates its own linker scripts. It'd be useful if 
there was a way to explicitly specify (e.g. via command line options) 
which libraries are meant to be linked statically (and/or the opposite) 
regardless of $linklib usage (as libraries can come through unit you 
depend on indirectly - e.g. i might want to statically link SDL but not 
X11 or glibc).


Kostas
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Bo Berglund via lazarus
On Fri, 17 Mar 2023 14:28:28 +0100 (CET), Michael Van Canneyt via lazarus
 wrote:

>> Since I am only using FPC units, how can I know???
>
>You want to say that you don't even know what the units do that you are using ?
>
>You have no idea how scary that is to me...
>

No, I wanted to say how could I know which *units use* the c library that
triggers the failure in order to do what they are doing, which I am fairly
certain I do know...


-- 
Bo Berglund
Developer in Sweden

-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Bo Berglund via lazarus
On Fri, 17 Mar 2023 14:17:11 +0100, Sven Barth via lazarus
 wrote:

>Bo Berglund via lazarus  schrieb am Fr., 17.
>März 2023, 13:54:
>> This aplication is a console (i.e NO GUI) application and it only uses
>> these
>> units:
>>
>> videosplitcmb.lpr:
>>
>> uses
>>   {$IFDEF UNIX}
>> cthreads,
>>   {$ENDIF}
>>   Classes,
>>   { you can add units after this }
>>
>> and
>>
>> utils.pas:
>>
>> uses
>>   Classes,
>>   SysUtils,
>>   Process;
>>
>> What is complex here?
>>
>
>Your code uses threads and on *nix systems that requires the C library.

Ok, my code does in fact NOT use threads but that is a standard uses clause that
gets inserted in all new projects created in Lazarus...

Anyway, on the Ubuntu 22.04 machine I now commented out cthreads and rebuilt the
application, then copied the binary over to the Ubuntu 20.04 system where it
previously did not run.

Result: It does no longer throw this error!

Thanks a lot for the suggestion!

>Regards,
>Sven


-- 
Bo Berglund
Developer in Sweden

-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Mehmet Erol Sanliturk via lazarus
On Fri, Mar 17, 2023 at 4:19 PM Sven Barth via lazarus <
lazarus@lists.lazarus-ide.org> wrote:

> Mehmet Erol Sanliturk via lazarus  schrieb
> am Fr., 17. März 2023, 12:58:
>
>>
>>
>> On Fri, Mar 17, 2023 at 10:07 AM Bo Berglund via lazarus <
>> lazarus@lists.lazarus-ide.org> wrote:
>>
>>> On Fri, 17 Mar 2023 08:53:01 +0300, Mehmet Erol Sanliturk via lazarus
>>>  wrote:
>>>
>>> >Some portability is obtained if the libraries are linked as "static" .
>>> >If "dynamic" linking is selected , during execution of the program ,
>>> >the "same" library should be in the executing computer .
>>> >
>>>
>>> How is this accomplished in Lazarus?
>>>
>>> Does this change happen randomly or is it connected to the major Ubuntu
>>> releases
>>> like going from 20.04 to 22.04 rather than just keeping 20.04 up-to-date?
>>>
>>> It implies having to build applications on as old a system as ever
>>> possible,
>>> maybe using 16.04 or earlier just for making apps that can run on all
>>> systems,
>>> is that really true?
>>>
>>> It makes no sense to me...
>>>
>>>
>>
>> Please study fpc.cfg file structure , and Lazarus IDE linking options .
>> On my computer , neither FPC nor Lazarus are installed .
>>
>>
>> There is an option to specify either dynamic linking or static linking of
>> libraries .
>>
>> When static linking is selected , it is necessary to have  static
>> linkable libraries ( *.a )
>> of used parts , i.e. , dynamic linkable libraries ( *.so.* ) can not be
>> used for
>> static linking .
>>
>>
>>
>> https://www.google.com/search?q=lazarus+static+linking+of+libraries=AJOqlzXTPuAEwc2JkAaon6mLwAvBM-kn5A%3A1679053415469=Z1IUZL2NHP-Qxc8PqvqOuAM=0ahUKEwj93Iyz8eL9AhV_SPEDHSq9AzcQ4dUDCA4=5=lazarus+static+linking+of+libraries_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCCEQoAE6BwgAEB4QsAM6BAgjECc6BggAEBYQHjoICAAQFhAeEAo6CAgAEBYQHhAPOgUIABCRAjoFCAAQgAQ6BwguEIAEEAo6BwgAEIAEEAo6CgguEIAEENQCEAo6CAgAEIAEEMsBOgsILhCABBDUAhDLAToICC4QgAQQywE6BQguEIAEOgsILhCABBDHARCvAToKCAAQgAQQFBCHAjoHCAAQDRCABDoICAAQBRAeEA06BAghEBU6BwghEKABEApKBAhBGAFQpBdYi8IBYIHJAWgDcAB4AIABxwGIAcYikgEEMC4zNpgBAKABAcgBAsABAQ=gws-wiz-serp
>>
>> lazarus static linking of libraries
>>
>> Comparison of Linux and Windows is not a fruitful action , because they
>> do not have much similarity
>> other than being operating systems .
>>
>
> Depending on the used units static linking is simply not an option. E.g.
> the database units load the database libraries dynamically and thus the C
> library must not be linked statically then.
>
> Regards,
> Sven
>
>> --
>
>
You are right .
Interdependency of libraries should be taken into consideration .

When static linking is not possible , it is necessary to compile the
program in question in the
operating system version causing incompatibility with the other version of
the operating system
where the program is compiled and working successfully .

Another point to consider and study is the procedures , conventions and
practices used in
the generation of Linux distributions .

Mehmet Erol Sanliturk
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Michael Van Canneyt via lazarus




On Fri, 17 Mar 2023, Bo Berglund via lazarus wrote:


On Fri, 17 Mar 2023 08:43:55 +0100 (CET), Michael Van Canneyt via lazarus
 wrote:


FPC has not changed. It still works the same.
Everything that is under control of FPC is linked statically.

But a complex GUI system like the LCL uses GTK/GDK/Qt and other libraries,
and those are dynamic, external libraries over which FPC or lazarus has no 
control.


This aplication is a console (i.e NO GUI) application and it only uses these
units:

videosplitcmb.lpr:

uses
 {$IFDEF UNIX}
   cthreads,
 {$ENDIF}
 Classes,
 { you can add units after this }
 sysutils,
 utils,
 runthread;

and

utils.pas:

uses
 Classes,
 SysUtils,
 Process;

What is complex here?



cthreads. The name says it all: C threads. It uses the C library.

See:

https://www.freepascal.org/docs-html/rtl/cthreads/index.html




If you use a unit that relies on LibC somewhere, you automatically depend on 
the libc
version.


Since I am only using FPC units, how can I know???


You want to say that you don't even know what the units do that you are using ?

You have no idea how scary that is to me...

Michael.

--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Sven Barth via lazarus
Mehmet Erol Sanliturk via lazarus  schrieb
am Fr., 17. März 2023, 12:58:

>
>
> On Fri, Mar 17, 2023 at 10:07 AM Bo Berglund via lazarus <
> lazarus@lists.lazarus-ide.org> wrote:
>
>> On Fri, 17 Mar 2023 08:53:01 +0300, Mehmet Erol Sanliturk via lazarus
>>  wrote:
>>
>> >Some portability is obtained if the libraries are linked as "static" .
>> >If "dynamic" linking is selected , during execution of the program ,
>> >the "same" library should be in the executing computer .
>> >
>>
>> How is this accomplished in Lazarus?
>>
>> Does this change happen randomly or is it connected to the major Ubuntu
>> releases
>> like going from 20.04 to 22.04 rather than just keeping 20.04 up-to-date?
>>
>> It implies having to build applications on as old a system as ever
>> possible,
>> maybe using 16.04 or earlier just for making apps that can run on all
>> systems,
>> is that really true?
>>
>> It makes no sense to me...
>>
>>
>
> Please study fpc.cfg file structure , and Lazarus IDE linking options .
> On my computer , neither FPC nor Lazarus are installed .
>
>
> There is an option to specify either dynamic linking or static linking of
> libraries .
>
> When static linking is selected , it is necessary to have  static linkable
> libraries ( *.a )
> of used parts , i.e. , dynamic linkable libraries ( *.so.* ) can not be
> used for
> static linking .
>
>
>
> https://www.google.com/search?q=lazarus+static+linking+of+libraries=AJOqlzXTPuAEwc2JkAaon6mLwAvBM-kn5A%3A1679053415469=Z1IUZL2NHP-Qxc8PqvqOuAM=0ahUKEwj93Iyz8eL9AhV_SPEDHSq9AzcQ4dUDCA4=5=lazarus+static+linking+of+libraries_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCCEQoAE6BwgAEB4QsAM6BAgjECc6BggAEBYQHjoICAAQFhAeEAo6CAgAEBYQHhAPOgUIABCRAjoFCAAQgAQ6BwguEIAEEAo6BwgAEIAEEAo6CgguEIAEENQCEAo6CAgAEIAEEMsBOgsILhCABBDUAhDLAToICC4QgAQQywE6BQguEIAEOgsILhCABBDHARCvAToKCAAQgAQQFBCHAjoHCAAQDRCABDoICAAQBRAeEA06BAghEBU6BwghEKABEApKBAhBGAFQpBdYi8IBYIHJAWgDcAB4AIABxwGIAcYikgEEMC4zNpgBAKABAcgBAsABAQ=gws-wiz-serp
>
> lazarus static linking of libraries
>
> Comparison of Linux and Windows is not a fruitful action , because they do
> not have much similarity
> other than being operating systems .
>

Depending on the used units static linking is simply not an option. E.g.
the database units load the database libraries dynamically and thus the C
library must not be linked statically then.

Regards,
Sven

>
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Sven Barth via lazarus
Bo Berglund via lazarus  schrieb am Fr., 17.
März 2023, 13:54:

> On Fri, 17 Mar 2023 08:43:55 +0100 (CET), Michael Van Canneyt via lazarus
>  wrote:
>
> >FPC has not changed. It still works the same.
> >Everything that is under control of FPC is linked statically.
> >
> >But a complex GUI system like the LCL uses GTK/GDK/Qt and other
> libraries,
> >and those are dynamic, external libraries over which FPC or lazarus has
> no control.
>
> This aplication is a console (i.e NO GUI) application and it only uses
> these
> units:
>
> videosplitcmb.lpr:
>
> uses
>   {$IFDEF UNIX}
> cthreads,
>   {$ENDIF}
>   Classes,
>   { you can add units after this }
>   sysutils,
>   utils,
>   runthread;
>
> and
>
> utils.pas:
>
> uses
>   Classes,
>   SysUtils,
>   Process;
>
> What is complex here?
>

Your code uses threads and on *nix systems that requires the C library.

Regards,
Sven
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Bo Berglund via lazarus
On Fri, 17 Mar 2023 08:43:55 +0100 (CET), Michael Van Canneyt via lazarus
 wrote:

>FPC has not changed. It still works the same. 
>Everything that is under control of FPC is linked statically.
>
>But a complex GUI system like the LCL uses GTK/GDK/Qt and other libraries, 
>and those are dynamic, external libraries over which FPC or lazarus has no 
>control.

This aplication is a console (i.e NO GUI) application and it only uses these
units:

videosplitcmb.lpr:

uses
  {$IFDEF UNIX}
cthreads,
  {$ENDIF}
  Classes,
  { you can add units after this }
  sysutils,
  utils,
  runthread;

and

utils.pas:

uses
  Classes,
  SysUtils,
  Process;

What is complex here?


>If you use a unit that relies on LibC somewhere, you automatically depend on 
>the libc
>version.

Since I am only using FPC units, how can I know???


>> Developing on an up-to-date system should ensure the output could work
>> everywhere, but not so now it appears
>
>No-one can ensure this. It was never so. It used to be worse in the past.
>
>Distributions change, and sometimes break binary compatibility. 
>This means you must cater for that.
>
>There are roughly 2 ways:
>- Compile on a system that has the correct version of libraries as on the
>   target computer.

I checked out the project into another Ubuntu 20.04 device with Lazarus/FPC
available.

Project compiled just fine and this binary runs on 20.04 and 22.04...


>> Notice: This is a command line utility so it needs no access to any GUI
>> components at all...
>
>You use libc through some unit that is included in your sources. The libc
>library on both systems you tested on differ too much, that is why you have
>the error.

Well, since I have *not* added any units except what is supplied by FPC/Lazarus
I don't understand what this means for a simple command line utility which uses
TProcess to start instances of ffmpeg


-- 
Bo Berglund
Developer in Sweden

-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Mehmet Erol Sanliturk via lazarus
On Fri, Mar 17, 2023 at 10:07 AM Bo Berglund via lazarus <
lazarus@lists.lazarus-ide.org> wrote:

> On Fri, 17 Mar 2023 08:53:01 +0300, Mehmet Erol Sanliturk via lazarus
>  wrote:
>
> >Some portability is obtained if the libraries are linked as "static" .
> >If "dynamic" linking is selected , during execution of the program ,
> >the "same" library should be in the executing computer .
> >
>
> How is this accomplished in Lazarus?
>
> Does this change happen randomly or is it connected to the major Ubuntu
> releases
> like going from 20.04 to 22.04 rather than just keeping 20.04 up-to-date?
>
> It implies having to build applications on as old a system as ever
> possible,
> maybe using 16.04 or earlier just for making apps that can run on all
> systems,
> is that really true?
>
> It makes no sense to me...
>
>

Please study fpc.cfg file structure , and Lazarus IDE linking options .
On my computer , neither FPC nor Lazarus are installed .


There is an option to specify either dynamic linking or static linking of
libraries .

When static linking is selected , it is necessary to have  static linkable
libraries ( *.a )
of used parts , i.e. , dynamic linkable libraries ( *.so.* ) can not be
used for
static linking .


https://www.google.com/search?q=lazarus+static+linking+of+libraries=AJOqlzXTPuAEwc2JkAaon6mLwAvBM-kn5A%3A1679053415469=Z1IUZL2NHP-Qxc8PqvqOuAM=0ahUKEwj93Iyz8eL9AhV_SPEDHSq9AzcQ4dUDCA4=5=lazarus+static+linking+of+libraries_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCCEQoAE6BwgAEB4QsAM6BAgjECc6BggAEBYQHjoICAAQFhAeEAo6CAgAEBYQHhAPOgUIABCRAjoFCAAQgAQ6BwguEIAEEAo6BwgAEIAEEAo6CgguEIAEENQCEAo6CAgAEIAEEMsBOgsILhCABBDUAhDLAToICC4QgAQQywE6BQguEIAEOgsILhCABBDHARCvAToKCAAQgAQQFBCHAjoHCAAQDRCABDoICAAQBRAeEA06BAghEBU6BwghEKABEApKBAhBGAFQpBdYi8IBYIHJAWgDcAB4AIABxwGIAcYikgEEMC4zNpgBAKABAcgBAsABAQ=gws-wiz-serp

lazarus static linking of libraries

Comparison of Linux and Windows is not a fruitful action , because they do
not have much similarity
other than being operating systems .


Mehmet Erol Sanliturk







> And from https://wiki.freepascal.org/Lazarus/FPC_Libraries
>
> --
> Static linking
>
> FPC compiles and links a static executable by default. That means it tells
> the
> linker to put all .o files of the project and all packages into one big
> executable.
>
> Advantages:
> No external dependencies.
> Disadvantages:
> No code is shared between different programs on the same computer.
> You can not load/unload a plugin.
>
> ---
>
> This idea was always why I liked Delphi when it came along in 1995 or so,
> just
> build an executable and it could be run everywhere.
> This is also why I liked FreePascal when it appeared because I did not
> need to
> bother with distributing extra files all over the place.
>
> So why has it changed now and how can I get around it?
> Developing on an up-to-date system should ensure the output could work
> everywhere, but not so now it appears
>
> I cannot find any setting for this in Lazarus.
>
> Notice: This is a command line utility so it needs no access to any GUI
> components at all...
>
>
> --
> 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


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Michael Van Canneyt via lazarus




On Fri, 17 Mar 2023, Bo Berglund via lazarus wrote:


On Fri, 17 Mar 2023 08:53:01 +0300, Mehmet Erol Sanliturk via lazarus
 wrote:


Some portability is obtained if the libraries are linked as "static" .
If "dynamic" linking is selected , during execution of the program ,
the "same" library should be in the executing computer .



How is this accomplished in Lazarus?


You need to change the units that refer to other libraries so they use
static linking.



Does this change happen randomly or is it connected to the major Ubuntu releases
like going from 20.04 to 22.04 rather than just keeping 20.04 up-to-date?


It is unpredictable, but will mostly happen in major releases of linux
distributions.



It implies having to build applications on as old a system as ever possible,
maybe using 16.04 or earlier just for making apps that can run on all systems,
is that really true?


No, this will not help you, as then you will have another problem: old
libraries installed on such systems may not exist on newer systems.



It makes no sense to me...


Why not ?

It's perfectly simple. Distributions changed the libraries which they
ship, and the libraries are no longer compatible.



And from https://wiki.freepascal.org/Lazarus/FPC_Libraries
--
Static linking

FPC compiles and links a static executable by default. That means it tells the
linker to put all .o files of the project and all packages into one big
executable.

   Advantages:
   No external dependencies.
   Disadvantages:
   No code is shared between different programs on the same computer.
   You can not load/unload a plugin.
---

This idea was always why I liked Delphi when it came along in 1995 or so, just
build an executable and it could be run everywhere.
This is also why I liked FreePascal when it appeared because I did not need to
bother with distributing extra files all over the place.

So why has it changed now and how can I get around it?


FPC has not changed. It still works the same. 
Everything that is under control of FPC is linked statically.


But a complex GUI system like the LCL uses GTK/GDK/Qt and other libraries, 
and those are dynamic, external libraries over which FPC or lazarus has no control.


If you use a unit that relies on LibC somewhere, you automatically depend on 
the libc
version.


Developing on an up-to-date system should ensure the output could work
everywhere, but not so now it appears


No-one can ensure this. It was never so. It used to be worse in the past.

Distributions change, and sometimes break binary compatibility. 
This means you must cater for that.


There are roughly 2 ways:
- Compile on a system that has the correct version of libraries as on the
  target computer.
- Distribute the needed libraries with your executable.


I cannot find any setting for this in Lazarus.


This cannot be solved with some setting.



Notice: This is a command line utility so it needs no access to any GUI
components at all...


You use libc through some unit that is included in your sources. The libc
library on both systems you tested on differ too much, that is why you have
the error.

Michael.
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-17 Thread Bo Berglund via lazarus
On Fri, 17 Mar 2023 08:53:01 +0300, Mehmet Erol Sanliturk via lazarus
 wrote:

>Some portability is obtained if the libraries are linked as "static" .
>If "dynamic" linking is selected , during execution of the program ,
>the "same" library should be in the executing computer .
>

How is this accomplished in Lazarus?

Does this change happen randomly or is it connected to the major Ubuntu releases
like going from 20.04 to 22.04 rather than just keeping 20.04 up-to-date?

It implies having to build applications on as old a system as ever possible,
maybe using 16.04 or earlier just for making apps that can run on all systems,
is that really true?

It makes no sense to me...

And from https://wiki.freepascal.org/Lazarus/FPC_Libraries
--
Static linking

FPC compiles and links a static executable by default. That means it tells the
linker to put all .o files of the project and all packages into one big
executable.

Advantages:
No external dependencies.
Disadvantages:
No code is shared between different programs on the same computer.
You can not load/unload a plugin.
---

This idea was always why I liked Delphi when it came along in 1995 or so, just
build an executable and it could be run everywhere.
This is also why I liked FreePascal when it appeared because I did not need to
bother with distributing extra files all over the place.

So why has it changed now and how can I get around it?
Developing on an up-to-date system should ensure the output could work
everywhere, but not so now it appears

I cannot find any setting for this in Lazarus.

Notice: This is a command line utility so it needs no access to any GUI
components at all...


-- 
Bo Berglund
Developer in Sweden

-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-16 Thread Mehmet Erol Sanliturk via lazarus
On Fri, Mar 17, 2023 at 8:18 AM Kostas Michalopoulos via lazarus <
lazarus@lists.lazarus-ide.org> wrote:

> On 3/17/23 01:36, Bo Berglund via lazarus wrote:
> > I do not know what the library libc.so.6 even does
>
> It is the C library that one or more of units/libraries you are linking
> against require.
>
> The issue is that you are making a binary on a newer version of glibc
> (the C library) than the system you want to run it - glibc (and most
> libraries really) is *backwards* compatible but not *forward*
> compatible: you can only run binaries on a system that uses the same or
> older versions of the library/libraries but not newer.
>
> The solution is very simple: build the binary on the oldest version of
> libraries you want to support - with the easiest approach being to
> download an ISO of some older version of a distro that has the oldest
> versions you want to support. For example AppImage suggests using at
> most the oldest still supported version of Ubuntu (e.g. Bionic Beaver
> from 2018).
>
> This is not unique to Lazarus or FPC, BTW, it is the same for any
> language and program that links against shared libraries on Linux.
>
> Kostas
>
> --
> ___
> lazarus mailing list
> lazarus@lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus



Some portability is obtained if the libraries are linked as "static" .
If "dynamic" linking is selected , during execution of the program ,
the "same" library should be in the executing computer .


Mehmet Erol Sanliturk
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-16 Thread Kostas Michalopoulos via lazarus

On 3/17/23 01:36, Bo Berglund via lazarus wrote:

I do not know what the library libc.so.6 even does


It is the C library that one or more of units/libraries you are linking 
against require.


The issue is that you are making a binary on a newer version of glibc 
(the C library) than the system you want to run it - glibc (and most 
libraries really) is *backwards* compatible but not *forward* 
compatible: you can only run binaries on a system that uses the same or 
older versions of the library/libraries but not newer.


The solution is very simple: build the binary on the oldest version of 
libraries you want to support - with the easiest approach being to 
download an ISO of some older version of a distro that has the oldest 
versions you want to support. For example AppImage suggests using at 
most the oldest still supported version of Ubuntu (e.g. Bionic Beaver 
from 2018).


This is not unique to Lazarus or FPC, BTW, it is the same for any 
language and program that links against shared libraries on Linux.


Kostas

--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


[Lazarus] version `GLIBC_2.34' not found error when running app on different PC

2023-03-16 Thread Bo Berglund via lazarus
I have used Lazarus 2.2.6 with fpc 3.2.2 on an Ubuntu 22.04 PC (recently
dist-upgraded from 20.04) to modify a video handling command line utility I
started back in 2018.
It uses calls to ffmpeg to do the actual video stuff and it was originally built
using earlier versions of Lazarus (2.0.12) and FPC (3.0.4), but now I fixed a
few issues using an updated installation with the latest versions.

The program I have built runs fine on that PC (an HP Elitebook w8440) but when I
move the executable from this machine to my Ubuntu 20.04 server PC I get this
when I try to run it:

videosplitcmb: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found
(required by videosplitcmb)

So it seems like somehow the program uses some underlying function in the Linux
system which I have no control over...

What can I do in order to make the executable portable to other linux machines
with the same CPU architecture???

I do not know what the library libc.so.6 even does


-- 
Bo Berglund
Developer in Sweden

-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus