c++ - 获取 Qt 应用程序的 .so 依赖项的完整列表?

标签 c++ linux qt shared-libraries

我的 Qt 应用程序应该在没有安装 Qt 甚至有旧版本的 glibc 等的 Linux 发行版上运行。所以我决定将这些库与我的应用程序一起分发。如何获取应用程序的完整依赖项列表,包括 Qt 和 glibc 等系统库的依赖项? 还有其他方法可以让我的应用程序在没有 glibc 和其他预期版本包的 Linux 发行版上运行吗?

最佳答案

这是可能的,但是有点棘手,特别是如果您还需要 glibc。在这种情况下,您甚至需要确保不仅 libc 是合适的,而且还带有相应的 ld 'so'。否则,您可能会在 libc 入口点之后、主函数之前出现段错误。

本质上,当您尝试运行应用程序时,您将看到缺少的库,直到添加所有库。

尝试:ldd -r foo -> 这将告诉您可执行文件或库需要哪些库。在这里您可以找到man page其中。

这是我系统中的示例:ldd -r/usr/lib/libQt5Quick.so.5.1.0

linux-vdso.so.1 (0x00007fffbb3fe000)
libQt5Qml.so.5 => /usr/lib/libQt5Qml.so.5 (0x00007f376576b000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007f3765433000)
libQt5Gui.so.5 => /usr/lib/libQt5Gui.so.5 (0x00007f3764e13000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007f3764800000)
libQt5V8.so.5 => /usr/lib/libQt5V8.so.5 (0x00007f376415a000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f3763e2c000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f3763b27000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f3763824000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f376347a000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f376325b000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f3763045000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f3762dd9000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f37629ce000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f3762799000)
libicui18n.so.51 => /usr/lib/libicui18n.so.51 (0x00007f3762398000)
libicuuc.so.51 => /usr/lib/libicuuc.so.51 (0x00007f3762021000)
libpcre16.so.0 => /usr/lib/libpcre16.so.0 (0x00007f3761dc4000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f3761bc0000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f37618c1000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f37616b9000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f37614a3000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f3766166000)
libnvidia-tls.so.325.15 => /usr/lib/libnvidia-tls.so.325.15 (0x00007f376129f000)
libnvidia-glcore.so.325.15 => /usr/lib/libnvidia-glcore.so.325.15 (0x00007f375ebbf000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f375e884000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f375e671000)
libicudata.so.51 => /usr/lib/libicudata.so.51 (0x00007f375cf27000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f375ccbc000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f375ca9d000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f375c898000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f375c692000)

关于c++ - 获取 Qt 应用程序的 .so 依赖项的完整列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18652928/

相关文章:

python - kali linux pip install paramiko 获取ValueError

linux - 如何在 Linux 中打印处理器的一个特定核心上列出的所有进程?

c++ - 我应该编写自己的数据结构来处理语义解析还是直接在编译器项目中使用 STL

c++ - 如何使用 C++ 对 Arduino 进行编程

c++ - 使用立方体贴图(不是反射贴图)对球体进行纹理化

c - 为什么我的c程序突然用了30g的虚拟内存?

qt - QTableView 中只有复选框的列

c++ - Qt creator 中的 Pantheios 与 VS C++ 2008 编译器

qt - 如何从左上到右填充 QGridLayout?

c++ - 在没有 OpenMP 的机器上忽略它