Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kiosk-Mode produces non-distributable binaries on Linux #324

Open
keinstein opened this issue Jun 21, 2021 · 2 comments
Open

Kiosk-Mode produces non-distributable binaries on Linux #324

keinstein opened this issue Jun 21, 2021 · 2 comments

Comments

@keinstein
Copy link

keinstein commented Jun 21, 2021

Hi,

I have seen that you reverted linking to libbfd from static to dynamic again in Kiosk mode.
As libbfd doesn't provide a backwards compatible ABI the generated binaries are not distributable. Well, you can distribute them, but you need exactly the same libbfd.so on the target computer as on the compiling computer. I fixed this issue upstream, already.

Libbfd is not intented to be used by normal user programs, so it MUST be linked staticallly.
Regards,
Keinstein

@mikefaille
Copy link

mikefaille commented Jul 15, 2021

Yes, on the lastest version of Ubuntu, I can't use Ctrlr because libbdf would be incompatible as current binary use an old version with a different Abi

@keinstein
Copy link
Author

@RomanKubiak
Theory: most libraries in Linux (and other *nix like MacOS/iOS) use semantic versioning, which means the library itself has an internal 3-part version number. One part changes when the ABI does not change, e.g. bug fixes, so that programs linked to that version can be used with the SO of an older version or programs linked to an older version can work with this version. Another part changes when there is only one-way backward compatibility, so that programs linked to the older versions are guaranteed to work with the newer version. This means that something has been added to the ABI. The third changes whenever something breaks the compatibility completely. On the file system level this is achieved by adding symlinks which have only the latter or the latter two parts of the library version.

libbfd does not follow this versioning scheme, so that the slightest version change may break the library. Thus the symlinks are omitted and the binary cannot be used anymore after a bugfix in libbfd has been published. Not to speak from a different Distribution or a different version of the distribution. Dynamic linking against libbfd will allmost always fail outside of the compiling computer.

Have a look at ba1eeeb : libbfd must to be linked as :libbfd.a.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants