问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Qt Creator安装库版本不兼容问题解决方案

创作时间:
作者:
@小白创作中心

Qt Creator安装库版本不兼容问题解决方案

引用
CSDN
1.
https://m.blog.csdn.net/xie__jin__cheng/article/details/145184776

1. 概要

1. 要点

Qt Creator在运行时遇到GCC库(libstdc++.so.6)和GLIBC库(libc.so.6, libm.so.6)版本不兼容的问题。具体表现为Qt Creator及其依赖的Qt库所需的版本高于系统中已安装的版本。解决方案包括升级系统库、安装更新版本的GCC、使用静态链接、容器或虚拟机等方法。

2. 命令摘要

  • 更新系统库

    sudo apt-get update
    sudo apt-get upgrade
    
  • 安装或更新GCC

    sudo apt-get install gcc-11 g++-11
    
  • 安装基本开发工具

    sudo apt install build-essential
    
  • 查找GCC对应的libstdc++.so.6路径

    gcc-12 -print-file-name=libstdc++.so.6
    
  • 检查libstdc++.so.6版本

    ls -l /usr/lib/aarch64-linux-gnu/libstdc++.so.6
    strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep CXXABI
    

2. 详细内容

在尝试运行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)

这些错误表明系统中安装的GCC库(libstdc++.so.6)和GLIBC库(libc.so.6, libm.so.6)版本低于Qt Creator及其依赖的Qt库所需的版本。以下是几种可能的解决方案:

1. 升级系统库

  • 检查您的Linux发行版的更新,看是否有可用的库更新。使用您的包管理器(如apt-get, yum等)来更新系统。

  • 对于Debian/Ubuntu系统,可以尝试:

    sudo apt-get update
    sudo apt-get upgrade
    
  • 如果您的发行版的仓库中没有所需版本的库,您可能需要考虑切换到更前沿的发行版版本,或者使用第三方仓库。

2. 安装或更新GCC

  • 您可能需要安装一个更新版本的GCC。在Debian/Ubuntu上,您可以尝试安装一个更高版本的GCC:

    sudo apt-get install gcc-11 g++-11
    
  • 确保在安装后,系统使用正确版本的GCC。您可能需要更新环境变量或配置,以确保使用新安装的编译器版本。

3. 使用静态链接

  • 如果可能,尝试使用静态链接版本的Qt Creator或其依赖库。这样,应用程序就不会依赖于系统上的共享库版本。

4. 使用容器或虚拟机

  • 使用Docker或虚拟机运行一个具有所需库版本的环境。这可以避免修改您的系统环境,并且可以轻松地为不同的项目配置不同的环境。

5. 下载或编译所需版本的库

  • 如果上述方法都不可行,您可以尝试从源代码编译所需版本的库,并确保它们在您的系统路径中被正确引用。

6. 检查Qt版本与系统兼容性

  • 确保您下载的Qt版本与您的操作系统版本兼容。有时候,使用与系统更匹配的Qt版本可以避免这类问题。

解决这类问题可能需要一些系统管理和编译知识。如果您不熟悉这些操作,建议在尝试之前做一些研究或寻求专业帮助。

3. 关联知识

1. 安装编译和开发所需的基本软件包

sudo apt install build-essential

这条命令是用于在基于Debian的Linux发行版(如Ubuntu)上安装编译和开发所需的基本软件包。它会安装GCC(GNU编译器集合)、G++(GNU C++编译器)、Make(一个控制软件编译的工具)等基本开发工具。

2. libstdc++.so.6的安装

libstdc++.so.6不是通过sudo apt install build-essential这个命令直接下载的。它是GNU C++标准库的一个版本,是GCC(GNU Compiler Collection)编译器的一部分。在Ubuntu系统中,可以通过以下命令安装:

sudo apt-get install libstdc++6

3. 使用update-alternatives管理命令链接

update-alternatives是Debian及其衍生系统中用于管理系统中命令链接符的工具。它允许系统管理员或用户选择系统中某个命令的默认版本。例如,可以使用以下命令设置默认的GCC版本:

sudo update-alternatives --config gcc

4. 查找与GCC 12对应的libstdc++.so.6

可以使用以下命令查找GCC 12对应的libstdc++.so.6路径:

gcc-12 -print-file-name=libstdc++.so.6

5. 确认GCC 12支持的libstdc++.so.6版本

通过检查符号链接、确认库文件版本、以及验证兼容性来确保它们之间的兼容性。例如:

ls -l /usr/lib/aarch64-linux-gnu/libstdc++.so.6
strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep CXXABI

6. CXXABI和GLIBCXX的区别

  • CXXABI定义了C++程序如何在二进制级别上与其他C++程序进行交互。
  • GLIBCXX是GNU C++标准库(libstdc++)的一个版本或特定标识,提供了C++标准库中的功能。

两者在C++程序中扮演着不同的角色,共同支持着C++程序的编译和运行。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号