银河麒麟v11 arm编译Qt creator8.0.2报错

一、编译qt

1、下载并编译qt5.15.10

https://mirrors.nju.edu.cn/qt/archive/qt/5.15/5.15.10/single/qt-everywhere-opensource-src-5.15.10.tar.xz

2、编译命令

2.1 解压

tar xf qt-everywhere-src-5.15.10.tar.xz

2.2 进入源码路径

cd qt-everywhere-src-5.15.10

2.3 安装编译工具

sudo apt-get install build-essential perl python3 git \

libglib2.0-dev libgl1-mesa-dev libx11-dev libxext-dev \

libxcb1-dev libxcb-xinerama0-dev libxcb-xfixes0-dev

2.4 进入编译目录

mkdir build && cd build

2.5 配置编译

../configure -prefix /opt/qt5.15.10 -opensource -confirm-license \

-nomake examples -nomake tests

2.6 编译

make -j$(nproc)

2.7 安装

sudo make install

2.8 安装完成设置环境变量

echo 'export PATH=/opt/qt5.15.10/bin:$PATH' >> ~/.bashrc

echo 'export LD_LIBRARY_PATH=/opt/qt5.15.10/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

source ~/.bashrc

二、编译qt creator8.0.2

2.1 下载并解压

https://mirrors.nju.edu.cn/qt/archive/qtcreator/8.0/8.0.2/qt-creator-opensource-src-8.0.2.tar.xz

tar xvf qt-creator-opensource-src-8.0.2.tar.xz

2.2 进入源码路径

cd qt-creator-opensource-src-8.0.2

2.3 创建构建目录

mkdir build && cd build

2.4 安装编译依赖的组件,报错

报错原因:

银河麒麟V11的 libicu74 版本是 74.2-ok6k0.3(系统自带)。

但 llvm-17-dev 依赖的是 74.2-ok6k0.2(旧版),两者版本号不一致 → APT 拒绝安装。

bash 复制代码
kylin@kylin-pc:~/qt_build/qt-creator-opensource-src-8.0.2/build_creator$ sudo apt install llvm-17-dev libclang-17-dev clang-17                      正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
clang-17 已经是最新版 (1:17.0.6-9ok4)。
clang-17 已设置为手动安装。
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libicu-dev : 依赖: libicu74 (= 74.2-ok6k0.2) 但是 74.2-ok6k0.3 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

2.5 禁用 Clang 插件进行编译

注意:禁用仅影响代码补全及相关功能

禁用 ClangCodeModel ClangFormat ClangTools Clazy

cmake .. \

-DCMAKE_BUILD_TYPE=Release \

-DCMAKE_PREFIX_PATH=/opt/qt5.15.10 \

-DWITH_CLANG=OFF \

-DWITH_CLANG_FORMAT=OFF \

-DWITH_CLANG_TIDY=OFF \

-DWITH_CLAZY=OFF \

-DWITH_TESTS=OFF

还是报错clang

bash 复制代码
方法A结果 kylin@kylin-pc:~/qt_build/qt-creator-opensource-src-8.0.2/build$ cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_PREFIX_PATH=/opt/qt5.15.10 \
  -DWITH_CLANG=OFF \
  -DWITH_CLANG_FORMAT=OFF \
  -DWITH_CLANG_TIDY=OFF \
  -DWITH_CLAZY=OFF \
  -DWITH_TESTS=OFF
CMake Warning (dev) at /usr/share/cmake-3.28/Modules/GNUInstallDirs.cmake:243 (message):
  Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
  target architecture is known.  Please enable at least one language before
  including GNUInstallDirs.
Call Stack (most recent call first):
  cmake/QtCreatorAPIInternal.cmake:73 (include)
  cmake/QtCreatorAPI.cmake:8 (include)
  CMakeLists.txt:16 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at /usr/lib/cmake/clang-17/ClangConfig.cmake:11 (find_package):
  Could not find a package configuration file provided by "LLVM" (requested
  version 17.0.6) with any of the following names:

    LLVMConfig.cmake
    llvm-config.cmake

  Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set
  "LLVM_DIR" to a directory containing one of the above files.  If "LLVM"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  cmake/FindClang.cmake:1 (find_package)
  CMakeLists.txt:100 (find_package)


-- Configuring incomplete, errors occurred!

2.6 修改cmake

1、打开qt-creator-opensource-src-8.0.2/CMakeLists.txt在100行位置注释并添加

#find_package(Clang QUIET)

set(Clang_FOUND OFF)

2.7、修改FindClang.cmake

qt-creator-opensource-src-8.0.2/cmake/FindClang.cmake

文件顶部加上如下图内容:

set(Clang_FOUND OFF)

return()

2.8、修改src/plugins/clangformat/CMakeLists.txt

打开src/plugins/clangformat/CMakeLists.txt最前面追加

return()

2.9、重新执行cmake

rm -rf *

cmake .. \

-DCMAKE_BUILD_TYPE=Release \

-DCMAKE_PREFIX_PATH=/opt/qt5.15.10 \

-DCMAKE_INSTALL_PREFIX=/opt/qtcreator-8.0.2 \

-DWITH_CLANG=OFF \

-DWITH_CLANG_FORMAT=OFF \

-DWITH_CLANG_TIDY=OFF \

-DWITH_CLAZY=OFF \

-DWITH_TESTS=OFF

直到显示下方,表示cmake成功

bash 复制代码
-- Build files have been written to: /home/kylin/qt_build/qt-creator-opensource-src-8.0.2/build

2.10、编译

nproc获取cpu核数,我这里是4核

cmake --build . --parallel 4

大约一小时左右如下图成功(速度与cpu性能有关)

最后再安装一下

sudo cmake --install .

2.11、解决自编译库链接

1、创建文件 /etc/ld.so.conf.d/qt515.conf:

sudo nano /etc/ld.so.conf.d/qt515.conf

2、粘贴以下内容

/opt/qt5.15.10/lib

3、更新动态链接器缓存

sudo ldconfig

这样以后所有程序(包括 Qt Creator 插件)都能找到 Qt5 自编译库

打开qtcreator如下图:

相关推荐
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区6 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大6 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai7 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜7 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa7 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio