Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/darealshinji/linuxdeploy-plugin-checkrt
Have your AppImage check libgcc and libstdc++ dependencies at runtime.
https://github.com/darealshinji/linuxdeploy-plugin-checkrt
appimage applications deployment linux linux-app packaging
Last synced: 3 months ago
JSON representation
Have your AppImage check libgcc and libstdc++ dependencies at runtime.
- Host: GitHub
- URL: https://github.com/darealshinji/linuxdeploy-plugin-checkrt
- Owner: darealshinji
- License: other
- Created: 2017-04-26T13:27:08.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-10T17:00:01.000Z (about 1 year ago)
- Last Synced: 2024-11-07T23:05:06.861Z (3 months ago)
- Topics: appimage, applications, deployment, linux, linux-app, packaging
- Language: C
- Homepage: https://github.com/probonopd/AppImageKit
- Size: 96.7 KB
- Stars: 36
- Watchers: 5
- Forks: 28
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
linuxdeploy-plugin-checkrt
--------------------------This linuxdeploy plugin allows you to deploy `libstdc++.so.6` and `libgcc_s.so.1`
without breaking compatibility. The installed AppRun hook script will compare the
symbol version numbers between the deployed libraries and those on your system
and only add the deployed ones to `LD_LIBRARY_PATH` if they're newer.Additionally the library `exec.so` is deployed and will be preloaded by AppRun if
it's found. This library is intended to restore the environment of the AppImage's
parent process in order to avoid library clashing of bundled libraries with external
processes called from within the AppImage (i.e. when a webbrowser is opened or a
terminal emulator is started).
If you don't want `exec.so` then simply delete it before creating your final AppImage.Requirements
------------
C compiler (GCC or Clang)Usage
-----
``` sh
# get linuxdeploy and linuxdeploy-plugin-checkrt and make them executable
wget -c "https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh"
wget -c "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod a+x linuxdeploy-x86_64.AppImage linuxdeploy-plugin-checkrt.sh# add GCC's libraries to the search path
# and call through linuxdeploy using the `--plugin checkrt` option
LD_LIBRARY_PATH="/path/to/my/gcc-snapshot/lib64" \
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin checkrt --output appimage --icon-file mypackage.png --desktop-file mypackage.desktop
```Why?
----
`libstdc++.so.6` and `libgcc_s.so.1` are part of GCC and if you compile code it
will be linked against these libraries if required. If you use a newer version
of GCC than normally available on your system these libraries will also be newer
and chances are high that your program - linked against these newer versions - is
no longer compatible to those installed by default on your system.Starting your program would get you an error message like this:
```
./myApp: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by ./myApp)
```However you cannot simply bundle these libraries as usual. If the AppImage is
started on a different system and an unbundled system library depends on a newer
version than available from the AppImage it won't work either.This linuxdeploy plugin will install a hook script that quickly checks and compares
the internal version number of the libraries and only adds them to the search
path if they're newer.Hacking
-------
The file `linuxdeploy-plugin-checkrt.sh` is created from `generate.sh`.
To add changes to the plugin you must edit the other files and then run `./generate.sh`.