Shared lib symlinks in target image


Lijun Chen
 

Hi,


When I build a yocto image, I added some packages into IMAGE_INSTALL, such as boost, thrift, etc. I notice in the target OS image, the shared libs don't the symlinks. But in the SDK image, the symlinks are there. For example,

lrwxrwxrwx 1 root root       22 Oct  2 16:41 libboost_filesystem-mt.so -> libboost_filesystem.so
lrwxrwxrwx 1 root root       29 Oct  2 16:41 libboost_filesystem.so -> libboost_filesystem.so.1.75.0

Is there a way to add the symlinks to the target image as well?


With the symlinks, I assume we can run an old application even the dependent lib is a newer version?


Thanks,

Lijun


This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.


Khem Raj
 

On Sat, Oct 2, 2021 at 6:55 PM Lijun Chen <lijchen@blackberry.com> wrote:

Hi,


When I build a yocto image, I added some packages into IMAGE_INSTALL, such as boost, thrift, etc. I notice in the target OS image, the shared libs don't the symlinks. But in the SDK image, the symlinks are there. For example,

lrwxrwxrwx 1 root root 22 Oct 2 16:41 libboost_filesystem-mt.so -> libboost_filesystem.so
lrwxrwxrwx 1 root root 29 Oct 2 16:41 libboost_filesystem.so -> libboost_filesystem.so.1.75.0

Is there a way to add the symlinks to the target image as well?


With the symlinks, I assume we can run an old application even the dependent lib is a newer version?
unversioned symlinks should not be used they are there to be used for
linking during build time. Unless you need to do builds on targets you
really do not need them
so explain you usecase. Are you trying to build stuff on device ?


Thanks,

Lijun

________________________________
This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.



Lijun Chen
 

I have an app built in a different environment that has lower versioned libs, such as boost. I was wondering if on the target there are symlinks to those libs, whether the app can be run on a target that has newer libs without resbuild against a matched env. Seems that is not viable.


From: Khem Raj <raj.khem@...>
Sent: Saturday, October 2, 2021 11:23:58 PM
To: Lijun Chen
Cc: yocto@...
Subject: Re: [yocto] Shared lib symlinks in target image
 
On Sat, Oct 2, 2021 at 6:55 PM Lijun Chen <lijchen@...> wrote:
>
> Hi,
>
>
> When I build a yocto image, I added some packages into IMAGE_INSTALL, such as boost, thrift, etc. I notice in the target OS image, the shared libs don't the symlinks. But in the SDK image, the symlinks are there. For example,
>
> lrwxrwxrwx 1 root root       22 Oct  2 16:41 libboost_filesystem-mt.so -> libboost_filesystem.so
> lrwxrwxrwx 1 root root       29 Oct  2 16:41 libboost_filesystem.so -> libboost_filesystem.so.1.75.0
>
> Is there a way to add the symlinks to the target image as well?
>
>
> With the symlinks, I assume we can run an old application even the dependent lib is a newer version?
>

unversioned symlinks should not be used they are there to be used for
linking during build time. Unless you need to do builds on targets you
really do not need them
so explain you usecase. Are you trying to build stuff on device ?

>
> Thanks,
>
> Lijun
>
> ________________________________
> This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
>
>
>

This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.


Khem Raj
 


Libraries have another symlink which looks something like libfoo.so.1 and 2 etc that is the one which should be used by apps 

On Mon, Oct 4, 2021 at 6:12 AM Lijun Chen <lijchen@...> wrote:

I have an app built in a different environment that has lower versioned libs, such as boost. I was wondering if on the target there are symlinks to those libs, whether the app can be run on a target that has newer libs without resbuild against a matched env. Seems that is not viable.


From: Khem Raj <raj.khem@...>
Sent: Saturday, October 2, 2021 11:23:58 PM
To: Lijun Chen
Cc: yocto@...
Subject: Re: [yocto] Shared lib symlinks in target image
 
On Sat, Oct 2, 2021 at 6:55 PM Lijun Chen <lijchen@...> wrote:
>
> Hi,
>
>
> When I build a yocto image, I added some packages into IMAGE_INSTALL, such as boost, thrift, etc. I notice in the target OS image, the shared libs don't the symlinks. But in the SDK image, the symlinks are there. For example,
>
> lrwxrwxrwx 1 root root       22 Oct  2 16:41 libboost_filesystem-mt.so -> libboost_filesystem.so
> lrwxrwxrwx 1 root root       29 Oct  2 16:41 libboost_filesystem.so -> libboost_filesystem.so.1.75.0
>
> Is there a way to add the symlinks to the target image as well?
>
>
> With the symlinks, I assume we can run an old application even the dependent lib is a newer version?
>

unversioned symlinks should not be used they are there to be used for
linking during build time. Unless you need to do builds on targets you
really do not need them
so explain you usecase. Are you trying to build stuff on device ?

>
> Thanks,
>
> Lijun
>
> ________________________________
> This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
>
>
>

This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.


Richard Purdie
 

On Sun, 2021-10-03 at 01:55 +0000, Lijun Chen wrote:
Hi,

When I build a yocto image, I added some packages into IMAGE_INSTALL, such as
boost, thrift, etc. I notice in the target OS image, the shared libs don't the
symlinks. But in the SDK image, the symlinks are there. For example,
lrwxrwxrwx 1 root root       22 Oct  2 16:41 libboost_filesystem-mt.so ->
libboost_filesystem.so
lrwxrwxrwx 1 root root       29 Oct  2 16:41 libboost_filesystem.so ->
libboost_filesystem.so.1.75.0

Is there a way to add the symlinks to the target image as well?
With the symlinks, I assume we can run an old application even the dependent
lib is a newer version?
The symlinks will be in the XXX-dev packages so boost-dev probably has them for
boost. They aren't needed on target unless you're compiling things which is why
they're separated out.

Cheers,

Richard