Qt运行时库版本不匹配错误

1.概要

2.内容

./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libUtils.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Gui.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Gui.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Network.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Test.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libNanotrace.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libNanotrace.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Qml.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Qml.so.6)

您遇到的错误表明您的系统上的某些库版本低于Qt Creator及其依赖项所需的版本。具体来说,libstdc++.so.6libm.so.6libc.so.6库需要更新版本才能满足Qt Creator的要求。以下是一些可能的解决方案:

  1. 更新系统库
    • 您可能需要将系统更新到提供所需库版本的较新版本。这可以通过系统的包管理器来完成。例如,在基于Debian的系统(如Ubuntu)上,您可以运行:

      sudo apt update
      sudo apt upgrade
    • 如果系统已经是最新版本,但库版本仍然不足,您可能需要添加或启用提供更新版本的软件库(PPA或第三方仓库)。
  2. 安装或更新GCC
    • libstdc++.so.6是GCC的一部分,因此更新GCC可能会提供所需的版本。您可以检查可用的GCC版本并安装更新版本:

      sudo apt install gcc-11 g++-11 # 或其他更高版本

    • 安装后,您可能需要配置环境以使用新版本的GCC。
  3. 使用静态链接的Qt版本
    • 如果可能,使用静态链接的Qt版本可以避免对特定系统库版本的依赖。然而,这通常需要您自己从源代码构建Qt。
  4. 使用容器或虚拟机
    • 如果更新系统或GCC不可行,您可以考虑使用Docker容器或虚拟机,在其中可以安装具有所需库版本的操作系统。
  5. 下载预编译的库
    • 在某些情况下,您可以从其他来源下载更新版本的库,但这种方法可能复杂且存在风险,因为它可能导致与系统上其他软件的兼容性问题。
  6. 检查Qt版本
    • 确保您使用的Qt版本与您的系统兼容。有时,使用较旧版本的Qt可能更适合较旧的系统。
  7. 环境变量
    • 确保LD_LIBRARY_PATH环境变量包含新库的位置(如果您手动安装了它们)。

在继续操作之前,请备份重要数据,因为系统更新或库更改可能导致意外问题。如果您不确定如何进行,请考虑寻求更有经验的用户或系统管理员的帮助。

3.关联链接

Qt运行时库版本不匹配错误-优快云博客

库:在你的系统中并未找到或版本不匹配-优快云博客

Qt Creator库版本不兼-优快云博客

Qt Creator安装:库版本不兼-优快云博客

安装gcc-13-优快云博客

4.关联知识

1.ubnutu,用命令行启动qt

在 Ubuntu 系统上使用命令行启动 Qt 应用程序,具体步骤取决于你的 Qt 应用程序是如何打包和构建的。以下是几种常见的情况:

1. 直接运行可执行文件

如果你的 Qt 应用程序已经编译成一个可执行文件,你可以直接在终端中运行它。假设你的可执行文件名为 myapp,并且位于当前目录:

./myapp

如果可执行文件不在当前目录,你需要提供完整路径,例如:

/path/to/your/app/myapp

2. 使用 qmake 和 make 编译后运行

如果你的项目是用 qmake 管理的,你可能需要先编译项目。假设你的项目文件是 myapp.pro,你可以按照以下步骤操作:

cd /path/to/your/project
qmake myapp.pro
make
./myapp

3. 使用 Qt Creator 生成的构建和运行脚本

如果你使用 Qt Creator 开发应用程序,它通常会生成一个构建目录,里面包含编译后的可执行文件。你可以在终端中导航到该目录并运行可执行文件。例如:

cd /path/to/your/project/build-myapp-Desktop_Qt_5_15_2_GCC_64bit-Debug
./myapp

4. 设置环境变量(如果需要)

某些情况下,你的 Qt 应用程序可能依赖于特定的环境变量,比如 LD_LIBRARY_PATH,以便找到 Qt 库。你可以在运行应用程序之前设置这些环境变量:

export LD_LIBRARY_PATH=/path/to/qt/lib:$LD_LIBRARY_PATH
./myapp

如果你的系统上安装了多个 Qt 版本,你可能需要使用 qtchooser 来选择正确的 Qt 版本。不过,这通常是在编译时配置的,运行时一般不需要特别处理。

示例

假设你有一个简单的 Qt 应用程序,并且已经编译成可执行文件 helloqt,位于 /home/user/QtProjects/build 目录下,你可以这样运行:

cd /home/user/QtProjects/build
./helloqt

调试信息

如果你希望在运行时查看调试信息,可以在运行命令前加上 QT_DEBUG_PLUGINS=1 环境变量(针对插件加载问题特别有用):

QT_DEBUG_PLUGINS=1 ./myapp

通过以上方法,你应该能够在 Ubuntu 系统上使用命令行启动你的 Qt 应用程序。如果遇到任何问题,检查可执行文件的路径、依赖库的路径,以及是否有必要的权限。

 QT_DEBUG_PLUGINS

QT_DEBUG_PLUGINS 是一个环境变量,用于在 Qt 应用程序中启用插件的调试信息。当你在开发或调试使用 Qt 框架的应用程序时,可能会遇到插件加载失败或行为异常的情况。这时,了解插件加载的详细过程就非常有帮助。通过设置 QT_DEBUG_PLUGINS 环境变量,你可以让 Qt 输出关于插件加载的详细日志信息,这有助于诊断问题。

如何使用 QT_DEBUG_PLUGINS

  1. 设置环境变量
    • 在 Linux 或 macOS 上,你可以在终端中设置此环境变量,然后运行你的 Qt 应用程序。例如:

      export QT_DEBUG_PLUGINS=1
      ./your_qt_app
    • 在 Windows 上,你可以在命令提示符(cmd)中设置环境变量:

      set QT_DEBUG_PLUGINS=1
      your_qt_app.exe
  2. 查看输出
    • 设置环境变量后,运行你的 Qt 应用程序。应用程序启动时,会在控制台或终端输出关于插件加载的详细信息,包括插件的搜索路径、尝试加载的插件名称、加载成功与否以及任何相关的错误信息。
  3. 分析日志
    • 通过分析这些日志信息,你可以确定哪些插件未能正确加载,以及可能的原因。这可能是因为插件不存在于预期的路径、插件与应用程序的 Qt 版本不兼容、或者插件本身存在缺陷。

使用场景

  • 插件加载问题:如果你的 Qt 应用程序报告缺少插件或无法加载插件,设置 QT_DEBUG_PLUGINS 可以帮助你找到问题的根源。
  • 版本兼容性:在升级 Qt 版本后,确保所有插件都兼容新版本是非常重要的。使用 QT_DEBUG_PLUGINS 可以帮助验证这一点。
  • 开发调试:在开发过程中,了解插件的加载行为有助于优化应用程序的启动时间和性能。

总之,QT_DEBUG_PLUGINS 是一个强大的工具,可以帮助 Qt 开发者诊断和解决与插件相关的问题。在开发或调试阶段,合理利用这个环境变量可以大大简化问题排查的过程。

2.ubnutu,启动qtcreator 

在 Ubuntu 系统中,使用命令行启动 Qt Creator 的步骤如下:

一、前提条件

确保 Qt Creator 已经正确安装在你的 Ubuntu 系统中。如果尚未安装,可以通过以下命令进行安装:

sudo apt update
sudo apt install qtcreator

二、启动 Qt Creator

  1. 打开终端

    • 你可以通过点击屏幕左上角的 Ubuntu 图标,然后在搜索框中输入“Terminal”来打开终端。
    • 或者使用快捷键 Ctrl + Alt + T 快速打开终端。
  2. 输入命令启动 Qt Creator

    • 在终端中输入以下命令:
      • 按 Enter 键,Qt Creator 应该会在几秒钟内启动。

    qtcreator

三、其他启动方式

除了使用命令行启动 Qt Creator 外,你还可以:

  1. 通过应用菜单启动

    • 在 Ubuntu 的应用菜单中查找 Qt Creator 图标,然后点击它以启动该应用程序。
  2. 使用软链接启动

    • 如果你希望使用更简短的命令启动 Qt Creator,可以为它的可执行文件创建一个软链接。例如,假设 Qt Creator 的可执行文件位于 /opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh,你可以通过以下命令在 /usr/local/bin 目录下创建一个名为 qt-creator 的软链接:
      • 之后,你可以在终端中只需输入 qt-creator 并按 Enter 键即可启动 Qt Creator。

    sudo ln -s /opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh /usr/local/bin/qt-creator

四、注意事项

  • 确保你在输入命令时使用了正确的路径和文件名。如果 Qt Creator 的安装路径不同,你需要根据实际情况调整命令。
  • 如果 Qt Creator 没有成功启动,可能是因为它没有正确安装在你的系统中,或者系统环境变量没有正确设置。检查安装路径和环境变量设置,确保一切正常。

通过以上步骤,你应该能够在 Ubuntu 系统中使用命令行成功启动 Qt Creator。

3.Qt Creator库版本不兼 

./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libUtils.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Gui.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Gui.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/Qt/lib/libQt6Network.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Test.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libNanotrace.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/libNanotrace.so.15)
./qtcreator: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Qml.so.6)
./qtcreator: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/topeet/Qt/Tools/QtCreator/bin/../lib/qtcreator/../Qt/lib/libQt6Qml.so.6)

您遇到的错误表明您的系统中安装的库版本不满足Qt Creator及其依赖库所需的版本。具体来说,您的系统中的libstdc++.so.6libm.so.6libc.so.6库版本过低,不支持Qt Creator所需的一些特定版本符号(如GLIBCXX_3.4.32GLIBC_2.38等)。

这里有几种可能的解决方案:

  1. 升级系统库
    • 如果您使用的是基于Debian或Ubuntu的系统,尝试更新您的系统到最新版本。可以通过运行以下命令来更新系统:

      sudo apt update
      sudo apt upgrade
      sudo apt dist-upgrade
    • 如果系统已经是最新,但库版本仍然不满足要求,您可能需要考虑升级到一个更新的操作系统版本,或者寻找包含所需库版本的第三方仓库。
  2. 安装或更新GCC
    • Qt Creator可能需要较新版本的GCC。您可以尝试安装一个更新版本的GCC。在Ubuntu上,您可以使用以下命令安装最新版本的GCC:
      sudo apt install gcc-11 g++-11

    • 安装后,您可能需要配置环境变量或更新链接器设置,以确保使用新版本的GCC库。
  3. 使用静态链接的Qt Creator
    • 如果可能,尝试获取一个静态链接的Qt Creator版本,这样它就不会依赖于系统级别的库版本。
  4. 使用容器或虚拟机
    • 如果您不想或不能更改系统级别的库,可以考虑使用Docker容器或虚拟机,在其中安装一个满足所有依赖要求的新操作系统环境。
  5. 下载或编译所需版本的库
    • 作为一种更复杂的选择,您可以尝试从源代码编译所需版本的库,并替换系统库或设置LD_LIBRARY_PATH环境变量以指向新编译的库。
  6. 检查Qt版本与系统兼容性
    • 确保您安装的Qt版本与您的操作系统版本兼容。有时候,Qt的某些版本仅支持特定范围的操作系统版本。

在尝试上述任何解决方案之前,建议备份重要数据,以防不测。如果您不确定如何操作,寻求有经验的系统管理员或专业人士的帮助可能是一个好主意。

 4.程序找不到Qt6网络库文件

./SanliApp: error while loading shared libraries: libQt6Network.so.6: cannot open shared object file: No such file or directory

这个错误信息表明你的程序 SanliApp 在尝试加载共享库 libQt6Network.so.6 时遇到了问题,因为它无法找到这个共享对象文件。这通常是因为系统没有安装所需的库,或者库的安装位置没有被包含在系统的动态链接库路径中。以下是一些可能的解决步骤:

  1. 确认库是否已安装
    • 如果你使用的是基于 Debian 的系统(如 Ubuntu),可以使用 dpkg -l | grep libqt6network 来检查 libQt6Network 是否已安装。
    • 如果是基于 RPM 的系统(如 Fedora),可以使用 rpm -qa | grep libqt6network
    • 如果没有安装,你需要安装它。对于 Ubuntu,可以使用 sudo apt-get install libqt6network6(注意具体的包名可能因版本而异)。
  2. 检查库文件的位置
    • 使用 find / -name libQt6Network.so.6 来查找库文件的确切位置。
    • 如果找到了库文件,确保它的路径被包含在环境变量 LD_LIBRARY_PATH 中。
  3. 设置 LD_LIBRARY_PATH
    • 如果库文件位于非标准路径,你可以通过设置 LD_LIBRARY_PATH 环境变量来指定额外的库搜索路径。例如,如果库位于 /usr/local/lib/qt6,你可以在终端中运行:

      export LD_LIBRARY_PATH=/usr/local/lib/qt6:$LD_LIBRARY_PATH
    • 然后再尝试运行你的程序。
  4. 配置 /etc/ld.so.conf
    • 另一种方法是修改 /etc/ld.so.conf 文件或向 /etc/ld.so.conf.d/ 目录中添加一个新的配置文件,包含库文件的路径。
    • 添加路径后,运行 sudo ldconfig 来更新链接器的缓存。
  5. 检查是否是权限问题
    • 确保你有权限访问库文件。使用 ls -l 查看文件权限。
  6. 使用静态链接
    • 如果可能,考虑将应用程序与所有必需的库静态链接。这样,程序就不依赖于系统上的共享库了。

执行上述步骤后,再次尝试运行你的应用程序,看看问题是否得到解决。如果问题仍然存在,可能需要检查其他依赖项或配置问题。

 5.PING命令结果解析及故障排查

PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data.
From 192.168.1.106 icmp_seq=1 Destination Host Unreachable
From 192.168.1.106 icmp_seq=2 Destination Host Unreachable
From 192.168.1.106 icmp_seq=3 Destination Host Unreachable
From 192.168.1.106 icmp_seq=4 Destination Host Unreachable

--- 192.168.1.21 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3049ms
pipe 4

这段PING命令的输出结果显示,尝试从源地址(可能是192.168.1.106,这是根据返回信息的推测)向目标地址192.168.1.21发送数据包时,所有四个数据包都无法到达目标主机。具体错误信息为“Destination Host Unreachable”(目标主机不可达)。

分析原因

  1. 网络配置问题
    • 目标主机192.168.1.21可能没有开机或者网络接口(如网卡)未启用。
    • 目标主机的IP地址可能已更改,或者配置错误。
    • 路由器或交换机可能没有正确配置,导致无法路由到目标主机。
  2. 物理连接问题
    • 连接目标主机的网线可能断开或损坏。
    • 目标主机所在的交换机端口可能关闭或出现故障。
  3. 防火墙或安全设置
    • 目标主机或网络中的防火墙可能阻止了ICMP(Internet控制消息协议,用于PING命令)数据包的通过。
    • 网络策略可能限制了某些设备之间的通信。

解决步骤

  1. 检查目标主机
    • 确认目标主机192.168.1.21是否开机并且网络接口正常工作。
    • 检查目标主机的IP地址配置是否正确。
  2. 检查网络设备
    • 查看连接目标主机的物理线路(如网线)是否完好,连接是否牢固。
    • 检查交换机、路由器等网络设备的状态和配置。
  3. 检查网络设置和安全策略
    • 确认没有防火墙或安全软件阻止ICMP数据包的传输。
    • 检查网络策略,确保允许源主机和目标主机之间的通信。

通过上述步骤,可以逐步定位问题原因,并采取相应的解决措施。如果问题依然存在,可能需要进一步的网络诊断工具或专业技术支持。

6.rm -rf build/* 

这条命令是在Linux或类Unix操作系统中使用的shell命令,用于删除build目录下的所有文件和子目录。下面是命令的详细解释:

  • rm:这是一个用于删除文件或目录的命令。rm是"remove"的缩写。
  • -rf:这是rm命令的两个选项组合在一起使用的。
    • -r 或 -R 表示递归删除,意味着它会删除指定目录及其所有子目录中的所有内容。
    • -f 表示强制删除,即不会询问确认,也不会因为特定错误(如找不到文件)而停止。
  • build/*:指定了要删除的目标。这里的build是目录名,而*是一个通配符,代表build目录下的所有文件和子目录。

综上所述,rm -rf build/*命令的作用是强制递归删除build目录下的所有文件和子目录,不会有任何确认提示。使用此命令时需要非常小心,因为一旦执行,被删除的数据通常无法恢复。在执行此类命令前,确保你真的想要删除这些文件,并且已经做好了必要的数据备份。

7.adb push install/rknn_sanli_Linux/ /root/sanli 

adb push 是 Android Debug Bridge (ADB) 的一个命令,用于将文件或目录从本地计算机复制到连接的 Android 设备上的指定位置。你提供的命令有一些可能的误解或需要调整的地方,下面是对该命令的解释和建议:

命令解释

  • adb push: 用于将本地文件或目录推送到 Android 设备上。
  • install/rknn_sanli_Linux/: 这是本地计算机上的源路径。假设这是一个目录,你希望将其内容推送到设备上。
  • /root/sanli: 这是目标路径,即你希望将内容推送到的 Android 设备上的位置。

可能的问题和建议

  1. 目录推送:
    • ADB 通常用于推送单个文件,而不是整个目录。如果你希望推送整个目录,需要确保目标设备上存在该目录(/root/sanli),或者你需要手动创建它,或者使用其他方法(如压缩目录后推送,再在设备上解压)。
  2. 权限问题:
    • /root 目录通常需要 root 权限才能写入。如果你的设备没有 root 权限,你将无法将文件推送到 /root/sanli
    • 确保你的设备已 root,或者你选择一个不需要 root 权限的目标目录。
  3. 命令格式:
    • 如果你只是想推送目录中的文件,你可能需要逐个文件推送,或者使用脚本自动化这一过程。

替代方案

  • 压缩和解压:
    1. 在本地将目录压缩成一个文件,例如 tar.gz
    2. 使用 adb push 将压缩文件推送到设备。
    3. 使用 adb shell 进入设备,解压文件到目标目录。
    示例:

    # 在本地压缩目录
    tar -czvf rknn_sanli.tar.gz -C install rknn_sanli_Linux
    
    # 推送压缩文件到设备
    adb push rknn_sanli.tar.gz /sdcard/
    
    # 在设备上解压(假设你有 root 权限)
    adb shell
    su
    tar -xzvf /sdcard/rknn_sanli.tar.gz -C /root/sanli

确保在执行这些操作时,你有适当的权限,并且了解在设备上执行命令的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值