将 Ubuntu 升级到 20.04 后,QtCreator 无法识别链接库

将 Ubuntu 升级到 20.04 后,QtCreator 无法识别链接库

我已经从 Ubuntu 18.04 升级到 20.04,除了一些棘手的grub问题外,大多数功能都可以立即使用。但我的 QtCreator ( Qt Creator 4.11.0, Based on Qt 5.12.8 (GCC 9.3.0, 64 bit)) 在识别包含的库时遇到了问题。它在更新前运行良好的项目中显示了数千条错误消息。这些错误消息看起来都像链接器错误消息。以下是一些示例:

 error: 'std::string' (aka 'int') is not a class, namespace, or enumeration
 error: no matching function for call to 'getline'
 error: member reference base type 'std::ifstream' (aka 'int') is not a structure or union
 error: no template named 'vector' in namespace 'std'
 error: unknown type name 'SystemCallFactory' //this class is from the same  project

甚至 qt 和 std 库中也存在一些错误:

/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1374: passing argument to parameter 's' here 
/usr/include/c++/8/ostream:41: candidate found by name lookup is 'std'
  • 该问题在 cmake 和 qmake 项目中均有发生
  • 我确实安装了(并且需要)不同的 gcc 和 g++ 版本(9 和 8)(更新后重新安装了这两个版本,因为更新替代方案设置被破坏并且一个依赖项从 6 升级到 8)

当我在 QtCreator 中创建一个新项目而不更改默认代码时,情况是一样的:

/home/$me/src/untitled/main.cpp:7: error: variable has incomplete type 'QApplication'`
/home/$me/src/untitled/main.cpp:8: error: unknown type name 'MainWindow'

已安装的编译器:

update-alternatives --display gcc
gcc - 自动模式 链接最佳版本是 /usr/bin/gcc-8 链接当前指向 /usr/bin/gcc-8 链接 gcc 是 /usr/bin/gcc /usr/bin/gcc-8 - 优先级 30 /usr/bin/gcc-9 - 优先级 20

update-alternatives --display g++ g++ - 自动模式 链接最佳版本为 /usr/bin/g++-8 链接当前指向 /usr/bin/g++-8 链接 g++ 为 /usr/bin/g++ /usr/bin/g++-8 - 优先级 30 /usr/bin/g++-9 - 优先级 20

我仍然可以手动构建所有项目,cmake 和 qmake 再次在这里工作。此外,当我在 QtCreator 中设置的构建目录中完成构建时,即使我更改了某些内容,QtCreator 也会构建我的项目。它仍会在我的代码和部分中显示错误issues,但无论如何都会构建和运行,因此构建命令应该没问题。但是当构建目录为空时,它将失败。
我该如何进一步解决这个问题?

答案1

同样的问题,与@nou 的解决方案相同。QtCreator 4.11 仍然依赖于 clang-8,但在 Ubuntu 20.04 上,apt 将安装 clang-10。以下内容为我解决了这个问题:

安装 clang 8

sudo apt install clang-8

更新替代方案

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 100
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 100

我不需要重新安装 QtCreator。

答案2

我不能 100% 确定这是同样的问题,但我通过安装 clang-8 包解决了它。我认为问题是 qtcreator 代码模型插件使用 libclang1-8,但默认安装了 clang-10。

答案3

看起来 Qt Creator 4.15.1 再次与其默认配置的套件发生冲突。

因此我通过以下方式自定义了一个:

  • 我已经从 ubuntu 安装了 clang 10。
  • sudo apt 安装 clang
  • 工具>选项>套件>套件
  • 选择默认的桌面 QT 5.15.2 64 位(默认)
  • 按克隆按钮
  • 在编译器部分
  • 对于 C :Clang 10(C,/usr/bin 中的 x86 64 位)
  • 对于 c++ Clang 10(C++,/usr/bin 中的 x86 64 位)
  • (附图)

使用此套件,cmake 和 Qmake 可以正常工作,并且缺少的 stl 和 std 路径也已修复。

在此处输入图片描述

相关内容