RPATH适用于LDD显示的大多数依赖库,但不适合CentOS 7.7上的所有库。
我仅在CENTOS 7.7上有这个问题(在Fedora 33和35上都可以按预期工作)。由于某种原因,我的适应应用程序试图打开系统libqt5core.so.5
,libsystemd.so.0
,以及其他一些。
我确保拥有rpath
(即,甚至没有runpath
:我通过使用patchelf-force-rpath -set-rpath
)实现了它。正确设置所有可执行文件和LIB。在下面,我在用-Appimage-track
选项中提取它后显示了我的适应性情况,并且应用patchelf
set rpath
:
[jenya@localhost bin]$ ldd myapp
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by ./myapp)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
linux-vdso.so.1 => (0x00007ffcc2592000)
libQt5Widgets.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5 (0x00007f2048415000)
libQt5Gui.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5 (0x00007f2047d9c000)
libQt5Sql.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5 (0x00007f2048d47000)
libQt5Network.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5 (0x00007f2048b98000)
libQt5Test.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5 (0x00007f2047d41000)
--->libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f2047894000)
libstdc++.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libstdc++.so.6 (0x00007f2047663000)
libm.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libm.so.6 (0x00007f204751a000)
libgcc_s.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgcc_s.so.1 (0x00007f20474fe000)
libc.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libc.so.6 (0x00007f204732c000)
libpthread.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpthread.so.0 (0x00007f2047308000)
libGL.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libGL.so.1 (0x00007f204726e000)
libpng16.so.16 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpng16.so.16 (0x00007f2047233000)
libz.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libz.so.1 (0x00007f2047218000)
libharfbuzz.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libharfbuzz.so.0 (0x00007f2047146000)
libdl.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libdl.so.2 (0x00007f204713e000)
libgssapi_krb5.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgssapi_krb5.so.2 (0x00007f20470e5000)
libssl.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libssl.so.1.1 (0x00007f2047042000)
libcrypto.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libcrypto.so.1.1 (0x00007f2046d3e000)
libsystemd.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libsystemd.so.0 (0x00007f2046c78000)
libicui18n.so.50 => /lib64/libicui18n.so.50 (0x00007f2046879000)
libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007f2046500000)
libicudata.so.50 => /lib64/libicudata.so.50 (0x00007f2044f2c000)
libpcre2-16.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpcre2-16.so.0 (0x00007f2044ea1000)
libgthread-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgthread-2.0.so.0 (0x00007f2044e9b000)
libglib-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libglib-2.0.so.0 (0x00007f2044d5e000)
../lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f2048b71000)
但是,但是,我有libqt5core.so.5
,在哪里:
[jenya@localhost bin]$ ls /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5
/home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5
此外,我确保确实具有rpath
的确,而不是Runpath
:
[jenya@localhost bin]$ readelf -d ./myapp | grep PATH
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../lib]
[jenya@localhost bin]$ readelf -d ../lib/libQt5Widgets.so.5 | grep PATH
0x000000000000000f (RPATH) Library rpath: [$ORIGIN]
如何这可以是,如何解决?谢谢您的关注。
I have this problem only on CentOS 7.7 (on Fedora 33 and 35 it all works as expected). My appimage app for some reason tries to open system libQt5Core.so.5
, libsystemd.so.0
, and some others, while loading most other libraries from the appimage as intended.
I ensured to have RPATH
(i.e., not even RUNPATH
: I achieved it by using patchelf --force-rpath --set-rpath
) set up correctly for all the executable and libs. Below, I show the situation for my appimage after I extracted it with --appimage-extract
option and applied patchelf
to set RPATH
:
[jenya@localhost bin]$ ldd myapp
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by ./myapp)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
linux-vdso.so.1 => (0x00007ffcc2592000)
libQt5Widgets.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5 (0x00007f2048415000)
libQt5Gui.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5 (0x00007f2047d9c000)
libQt5Sql.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5 (0x00007f2048d47000)
libQt5Network.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5 (0x00007f2048b98000)
libQt5Test.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5 (0x00007f2047d41000)
--->libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f2047894000)
libstdc++.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libstdc++.so.6 (0x00007f2047663000)
libm.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libm.so.6 (0x00007f204751a000)
libgcc_s.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgcc_s.so.1 (0x00007f20474fe000)
libc.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libc.so.6 (0x00007f204732c000)
libpthread.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpthread.so.0 (0x00007f2047308000)
libGL.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libGL.so.1 (0x00007f204726e000)
libpng16.so.16 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpng16.so.16 (0x00007f2047233000)
libz.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libz.so.1 (0x00007f2047218000)
libharfbuzz.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libharfbuzz.so.0 (0x00007f2047146000)
libdl.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libdl.so.2 (0x00007f204713e000)
libgssapi_krb5.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgssapi_krb5.so.2 (0x00007f20470e5000)
libssl.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libssl.so.1.1 (0x00007f2047042000)
libcrypto.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libcrypto.so.1.1 (0x00007f2046d3e000)
libsystemd.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libsystemd.so.0 (0x00007f2046c78000)
libicui18n.so.50 => /lib64/libicui18n.so.50 (0x00007f2046879000)
libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007f2046500000)
libicudata.so.50 => /lib64/libicudata.so.50 (0x00007f2044f2c000)
libpcre2-16.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpcre2-16.so.0 (0x00007f2044ea1000)
libgthread-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgthread-2.0.so.0 (0x00007f2044e9b000)
libglib-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libglib-2.0.so.0 (0x00007f2044d5e000)
../lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f2048b71000)
However, I have the libQt5Core.so.5
, where it should be:
[jenya@localhost bin]$ ls /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5
/home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5
Besides, I have ensured to have RPATH
indeed, rather than RUNPATH
:
[jenya@localhost bin]$ readelf -d ./myapp | grep PATH
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../lib]
[jenya@localhost bin]$ readelf -d ../lib/libQt5Widgets.so.5 | grep PATH
0x000000000000000f (RPATH) Library rpath: [$ORIGIN]
How can this be and how can this be fixed? Thank you for attention.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果仔细观察,人们可以看到
03 ... 11
。这说它希望内核不小于3.17。strip
的解决方案在此处提出 https://bugsarlinux.org.org/任务/61130 在网上的其他地方没有帮助我。因此,我安装了
hexedit
,并用它打开了lib。我制作了/
-的搜索> 10000000000000000474E5500
,然后替换11
(即17)(IE 17)01
(仅一些版本少一些版本比3.10
,即CentOS 7.7的版本),并保存和退出(ctrl+x
)。这是一个技巧。
If one looks closely one can see
03 ... 11
. This says that it want kernel not younger than 3.17.The solution by
strip
, proposed here https://bugs.archlinux.org/task/61130 and in some other places on the net did not help me.So I installed
hexedit
and opened the lib with it. I made/
-search of1000000001000000474e5500
, and replaced11
(i.e. 17) by01
(just some version less than3.10
, i.e. the version of Centos 7.7), and saved and exited (byCtrl+x
).This did the trick.