IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> centos8上源码安装qt-5.15.3 -> 正文阅读

[系统运维]centos8上源码安装qt-5.15.3

步骤:
tar xf qt-everywhere-opensource-src-5.15.3.tar
cd qt-everywhere-src-5.15.3/
./configure --prefix=/home/install/qt-5.15.3??-opensource??-shared??-static??-compile-examples??-xcb
time make -j 8
time make install -j 8
问题1:
Feature 'xcb' was enabled, but the pre-condition 'features.thread??&& libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11' failed.
现象:
(base) [lzc@localhost qt-everywhere-src-5.15.3]$ ./configure??--prefix=/home/install/qt-5.15.3??-opensource??-shared??-static???-compile-examples -xcb
+ cd qtbase
+??/home/data/lzc/technic/coding/lang/qt/release/5.15.3/qt-everywhere-src-5.15.3/qtbase/configure -top-level --prefix=/home/install/qt-5.15.3??-opensource -shared -static -compile-examples -xcb
Creating qmake...
.Done.

...

Note: The following modules are not being compiled in this??configuration:
????webenginecore
????webengine
????webenginewidgets
????pdf
????pdfwidgets
WARNING: QDoc will not be compiled, probably because libclang could not??be located. This means that you cannot build the Qt documentation.
Either ensure that llvm-config is in your PATH environment variable, or??set LLVM_INSTALL_DIR to the location of your llvm installation.
On Linux systems, you may be able to install libclang by installing the??libclang-dev or libclang-devel package, depending on your distribution.
On macOS, you can use Homebrew's llvm package.
On Windows, you must set LLVM_INSTALL_DIR to the installation path.
WARNING: Tool gperf is required to build QtWebEngine.
WARNING: Tool gperf is required to build QtPdf.
WARNING: QtWebEngine will not be built.
WARNING: QtPdf will not be built.
ERROR: Feature 'xcb' was enabled, but the pre-condition 'features.thread??&& libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11' failed.
Check config.log for details.
网上有很多这类解决方法,总体思路是安装缺失xcb库,这些库需要覆盖:
Qt for X11 Requirements | Qt 5.15
libfontconfig1-dev
libfreetype6-dev
libx11-dev
libx11-xcb-dev
libxext-dev
libxfixes-dev
libxi-dev
libxrender-dev
libxcb1-dev
libxcb-glx0-dev
libxcb-keysyms1-dev
libxcb-image0-dev
libxcb-shm0-dev
libxcb-icccm4-dev
libxcb-sync0-dev
libxcb-xfixes0-dev
libxcb-shape0-dev
libxcb-randr0-dev
libxcb-render-util0-dev
libxcd-xinerama-dev
libxkbcommon-dev
libxkbcommon-x11-dev
但是在我的centos8上这些库用yum list查看都是安装好的,或者yum reinstall重新安装都解决不了问题。
最后通过分析config.log发现提示是xcb_icccm库not foud:
/usr/bin/pkg-config --modversion xcb-icccm '>=' 0.3.9
not found
但事实上这个库在系统里面已经是安装的:
(base) [root@localhost qt-everywhere-src-5.15.3]# ll /lib64/libxcb-icccm.*
-rw-r--r--. 1 root root 87378 Apr??5 11:36 /lib64/libxcb-icccm.a
-rwxr-xr-x. 1 root root???975 Apr??5 11:36 /lib64/libxcb-icccm.la
lrwxrwxrwx. 1 root root????21 Apr??5 11:36 /lib64/libxcb-icccm.so -> libxcb-icccm.so.4.0.0
lrwxrwxrwx. 1 root root????21 Apr??5 11:36 /lib64/libxcb-icccm.so.4 -> libxcb-icccm.so.4.0.0
-rwxr-xr-x. 1 root root 56360 Apr??5 11:36 /lib64/libxcb-icccm.so.4.0.0
config.log里面所谓的找不到是pkt-config找不到,那为什么xcb却能找到:
+ /usr/bin/pkg-config --modversion xcb '>=' 1.11
> 1.13.1
pkt-config找库的原理是通过识别一类后缀名“pc”的文件来实现的,比如“ xcb-renderutil.pc”,这些问题一般放在如下目录里面:
/lib64/pkgconfig/
/usr/lib64/pkgconfig/
也即是说libxcb-icccm的.pc文件没有被pkt-config找到而xcb却能够被找到,进而发现,在/lib64/pkgconfig/下面没有xcb-icccm.pc文件。
解决方法:
到这个网址去下载对应的rqm文件安装,
或者到这个网址去下载源码安装,安装路径为 --prefix=/usr
潜在风险是可能面临依赖问题。
解决libxcb-icccm问题后,陆续发现还存在以及库找不到情况,特别是libxkbcommon-x11以来比较多,没法继续:
xcb-util-renderutil
xcb-util-keysyms
xcb-util-image
libxkbcommon-x11
也就是说 libxkbcommon-x11必须由yum install来安装。
在对应的页面上:
有如下提示:
Install Howto
Install?libxkbcommon-x11-devel rpm package:# dnf --enablerepo=powertools install libxkbcommon-x11-devel
找一个yum/dnf 国内源,使用dnf安装解决问题。
问题2:
/home/data/lzc/technic/coding/lang/qt/release/5.15.3/qt-everywhere-src-5.15.3/qtbase/src/corelib/text/qbytearraymatcher.h:103:38: error: ‘numeric_limits’ is not a member of ‘std’
??103 |?????????const auto uchar_max = (std::numeric_limits<uchar>::max)();
??????|??????????????????????????????????????^~~~~~~~~~~~~~
/home/data/lzc/technic/coding/lang/qt/release/5.15.3/qt-everywhere-src-5.15.3/qtbase/src/corelib/text/qbytearraymatcher.h:103:58: error: expected primary-expression before
‘>’ token
??103 |?????????const auto uchar_max = (std::numeric_limits<uchar>::max)();
??????|??????????????????????????????????????????????????????????^
/home/data/lzc/technic/coding/lang/qt/release/5.15.3/qt-everywhere-src-5.15.3/qtbase/src/corelib/text/qbytearraymatcher.h:103:61: error: ‘::max’ has not been declared; did you mean ‘std::max’?
??103 |?????????const auto uchar_max = (std::numeric_limits<uchar>::max)();
??????|?????????????????????????????????????????????????????????????^~~
??????|?????????????????????????????????????????????????????????????std::max


In file included from qqmlprofilerevent.cpp:40:
qqmlprofilerevent_p.h: In member function ‘void QQmlProfilerEvent::assignNumbers(const Container&)’:
qqmlprofilerevent_p.h:314:65: error: ‘numeric_limits’ is not a member of ‘std’
??314 |?????????????????????static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();
??????|?????????????????????????????????????????????????????????????????^~~~~~~~~~~~~~
qqmlprofilerevent_p.h:314:87: error: expected primary-expression before ‘>’ token
??314 |?????????????????????static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();
??????|???????????????????????????????????????????????????????????????????????????????????????^
qqmlprofilerevent_p.h:314:90: error: ‘::max’ has not been declared; did you mean ‘std::max’?
??314 |?????????????????????static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();
??????|??????????????????????????????????????????????????????????????????????????????????????????^~~
??????|??????????????????????????????????????????????????????????????????????????????????????????std::max
In file included from /home/install/gcc-11.2.0/include/c++/11.2.0/algorithm:62,

解决方法:

找到对应的头文件,添加标准库:

#include <limits>
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:28:46  更:2022-04-06 16:30:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:21:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码