1. 目的

qt4升级qt5之后,QString::toDouble方法不依赖于locale,导致很多欧洲国家(e.g.Germany,使用,作为小数点)转换有问题。 因此修改qt库,在QString::toDouble中直接调用QLocale的toDouble方法。这样就需要编译qt库,qstring.cpp位于qtbase工程下,最终生成libQt5Core.so.5.15.0, 理论上只要替换这个库就可以 (实际在Linux上有问题, windows 上可以。)。

2. 编译安装

2.1 SUSE SEL-15 x86_64平台

2.2.1. 安装依赖

README

因为Src/qtbase下没有README文件,所以,查看Src下的README文件,给出依赖 Perl5.8或更高版本,Python2.7或更高版本,支持C++11的C++编译器参。考 http://wiki.qt.io/Get_The_Source 中的 Setting up your machine–> Qt for X11 Requirements https://doc.qt.io/qt-5/linux-requirements.html 还需以下依赖库:

libxcb 1.11 libXrender libxcb-render libxcb-render-util libxcb-shape libxcb-randr libxcb-xfixes libxcb-sync libxcb-shm libxcb-icccm libxcb-keysyms libxcb-image libxkbcommon libxkbcommon-x11 libfontconfig libfreetype libXext libX11 libxcb libX11-xcb libSM libICE libglib-2.0 libpthread
libatspi opengl flite1-dev libspeechd-dev speech-dispatcher

根据wiki, https://wiki.qt.io/Qt_5.15_Tools_and_Versions 针对SLES15 x86_64:

  • OpenSSL 版本必须是 1.1.1d 否则不能编译,当前版本是1.1.0i, 需更新版本,为了不影响系统对1.1.0i的依赖,最好安装在指定目录,用的时候指定就可以。具体操作见博客
    openssl库的编译安装-SUSE 15
  • libClang版本为6.0,而yast上只能装5.x的。解决办法是在 opensuse software 上下载。安装的时候会提示需要依赖库,下载安装即可。可直接安装到系统路径, 该包不能指定安装路径。

2.1.2 执行configure 生成Makefile

进入Qt安装目录下的Src/qtbase:

./configure --prefix=/opt/Qt5.15.0/5.15.0/gcc_64
-I/home/ms1/workspace/tools/openssl/install-bak/include
-L/home/ms1/workspace/tools/openssl/install-bak/lib
-nomake examples
-nomake tests
-confirm-license

update:
/configure --prefix=/opt//Qt5.15.0/5.15.0/gcc_64 -I/home/ms1/workspace/tools/openssl/install-bak/include -L/home/ms1/workspace/tools/openssl/install-bak/lib -nomake examples -nomake tests -recheck-all -xcb -xcb-xlib
指定安装路径为/opt/Qt5.15.0/5.15.0/gcc_64(默认为/user/locale/Qt-5.15.0), 指定openssl 头文件和库的路径(默认是用系统自带的openssl 1.1.0i, 版本太低)
执行结果:

Compiler: gcc 7.5.0
Configuration: sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples enable_new_dtags f16c largefile precompile_header rdrnd shani x86SimdAlways shared shared rpath release c++11 c++14 c++17 c++1z concurrent dbus reduce_exports reduce_relocations stl
Build options:
  Mode ................................... release
  Optimize release build for size ........ no
  Building shared libraries .............. yes
  Using C standard ....................... C11
  Using C++ standard ..................... C++17
  Using ccache ........................... no
  Using new DTAGS ........................ yes
  Relocatable ............................ yes
  Using precompiled headers .............. yes
  Using LTCG ............................. no
  Target compiler supports:
    SSE .................................. SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
    AVX .................................. AVX AVX2
    AVX512 ............................... F ER CD PF DQ BW VL IFMA VBMI
    Other x86 ............................ AES F16C RDRAND SHA
    Intrinsics without -mXXX option ...... yes
  Build parts ............................ libs tools
Qt modules and options:
  Qt Concurrent .......................... yes
  Qt D-Bus ............................... yes
  Qt D-Bus directly linked to libdbus .... yes
  Qt Gui ................................. yes
  Qt Network ............................. yes
  Qt Sql ................................. yes
  Qt Testlib ............................. yes
  Qt Widgets ............................. yes
  Qt Xml ................................. yes
Support enabled for:
  Using pkg-config ....................... yes
  udev ................................... yes
  Using system zlib ...................... yes
  Zstandard support ...................... no
Qt Core:
  DoubleConversion ....................... yes
    Using system DoubleConversion ........ no
  GLib ................................... yes
  iconv .................................. no
  ICU .................................... yes
  Built-in copy of the MIME database ..... yes
  Tracing backend ........................ <none>
  Logging backends:
    journald ............................. no
    syslog ............................... no
    slog2 ................................ no
  PCRE2 .................................. yes
    Using system PCRE2 ................... no
Qt Network:
  getifaddrs() ........................... yes
  IPv6 ifname ............................ yes
  libproxy ............................... no
  Linux AF_NETLINK ....................... yes
  OpenSSL ................................ yes
    Qt directly linked to OpenSSL ........ no
  OpenSSL 1.1 ............................ yes
  DTLS ................................... yes
  OCSP-stapling .......................... yes
  SCTP ................................... no
  Use system proxies ..................... yes
  GSSAPI ................................. no
Qt Gui:
  Accessibility .......................... yes
  FreeType ............................... yes
    Using system FreeType ................ yes
  HarfBuzz ............................... yes
    Using system HarfBuzz ................ yes
  Fontconfig ............................. yes
  Image formats:
    GIF .................................. yes
    ICO .................................. yes
    JPEG ................................. yes
      Using system libjpeg ............... yes
    PNG .................................. yes
      Using system libpng ................ yes
  Text formats:
    HtmlParser ........................... yes
    CssParser ............................ yes
    OdfWriter ............................ yes
    MarkdownReader ....................... yes
      Using system libmd4c ............... no
    MarkdownWriter ....................... yes
  EGL .................................... yes
  OpenVG ................................. no
  OpenGL:
    Desktop OpenGL ....................... yes
    OpenGL ES 2.0 ........................ no
    OpenGL ES 3.0 ........................ no
    OpenGL ES 3.1 ........................ no
    OpenGL ES 3.2 ........................ no
  Vulkan ................................. no
  Session Management ..................... yes
Features used by QPA backends:
  evdev .................................. yes
  libinput ............................... yes
  INTEGRITY HID .......................... no
  mtdev .................................. yes
  tslib .................................. yes
  xkbcommon .............................. yes
  X11 specific:
    XLib ................................. yes
    XCB Xlib ............................. yes
    EGL on X11 ........................... yes
    xkbcommon-x11 ........................ yes
QPA backends:
  DirectFB ............................... no
  EGLFS .................................. yes
  EGLFS details:
    EGLFS OpenWFD ........................ no
    EGLFS i.Mx6 .......................... no
    EGLFS i.Mx6 Wayland .................. no
    EGLFS RCAR ........................... no
    EGLFS EGLDevice ...................... yes
    EGLFS GBM ............................ yes
    EGLFS VSP2 ........................... no
    EGLFS Mali ........................... no
    EGLFS Raspberry Pi ................... no
    EGLFS X11 ............................ yes
  LinuxFB ................................ yes
  VNC .................................... yes
Qt Sql:
  SQL item models ........................ yes
Qt Widgets:
  GTK+ ................................... no
  Styles ................................. Fusion Windows
Qt PrintSupport:
  CUPS ................................... no
Qt Sql Drivers:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. no
  OCI (Oracle) ........................... no
  ODBC ................................... no
  PostgreSQL ............................. no
  SQLite2 ................................ no
  SQLite ................................. yes
    Using system provided SQLite ......... no
  TDS (Sybase) ........................... no
Qt Testlib:
  Tester for item models ................. yes
  Note: Also available for Linux: linux-clang linux-icc

产生的文件:
config.opt:记录执行configure时的命令行参数。
config.cache: 缓存,需删除之后再执行configure,否则执行的结果读的是缓存中的。(也可以加参数-recheck-all代替)
config.summary: 保存执行结果,和terminal输出的内容一样。

1. 目的qt4升级qt5之后,QString::toDouble方法不依赖于locale,导致很多欧洲国家(e.g.Germany,使用,作为小数点)转换有问题。 因此修改qt库,在QString::toDouble中直接调用QLocale的toDouble方法。这样就需要编译qt库,qstring.cpp位于qtbase工程下,最终生成libQt5Core.so.5.15.0, 理论上只要替换这个库就可以 (实际在Linux上有问题。)。2. 编译安装2.1 SUSE SEL-15 x86_64平
1.静态编译openssl ,参考这里:https://blog.csdn.net/peihexian/article/details/106954546 2.准备编译环境 qt 5.15源码要求gcc编译版本不能太低,需要先升级gcc编译工具链,官方是这么要求的: 在centos7下面编译的话最低不能低于gcc 5.3.1 ,这里直接安装gcc 7.3使用,安装命令如下: yum -y install centos-release-scl yum -y install devtool..
Qt的官方下载地址:Qt Downloads Qt 5.15.2源码下载路径:/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip 二、编译源码 Qt官网提供了编译前需要安装的库及编译步骤:Building Qt 5 from Git 安装编译所依赖的库,主要是说一下xcb。 The xcb QPA platform plugin Qt源码编译configure配置参数,模块相关的根
用configure配置QT5.0.1时出现一个错误:“qtbase\\configure.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件”。 原因是直接下的代码,并不是用git里clone出来的。 解决办法是在qtbase创建一个.gitignore文件,里面内容为foo。 如在qt-everywhere-opensource-src-5.0.1目录下,可以运行命令:“ech
文章目录HOW TO BUILD QT5SynopsisSystem requirementsLicensing:Linux, Mac:Windows:Build!HintsBuilding Qt5 from gitDocumentation 简 述: 本文是 qt-everywhere-src-5.15.2.tar.xz 解压后的英文原文的 README 译文,其中文译文可见:如何构建 QT55.15)。然后根据此中步骤,成功在 Mac Mojave 中成功编译和运行,其中具体的实战编译参考原文:在
目标,将现有Qt项目移植到改系统下进行开发。 准备安装Qt5.15.2 ,Qt官方提供的安装包都是x86架构下的,不能直接在arm架构下安装,网上看了很多示例,说可以直接在终端通过命令行来安装: sudo aptitude install libdtkwidget-dev qt5-default qtcreator qtdeclarative5-dev 这样确实可以安装Qt,但是装的是
SUSE是一家知名的Linux发行版制造商,其最新版本是SUSE Linux Enterprise 15(简称SUSE 15)。为了安装SUSE 15,用户需要下载SUSE 15的ISO镜像文件。ISO镜像是一种完全复制CD或DVD的文件格式,用户可以通过它来创建安装介质。SUSE 15 ISO下载过程非常简单,只需打开SUSE官方网站,找到“下载”页面,选择合适的ISO版本和下载源,便可开始下载。 在SUSE官网下载页面,用户可以选择不同的下载源。一般来说,用户可以选择官方下载源或使用SUSE官方推荐的镜像站点。用户还可以通过种子文件来下载ISO镜像,这可以提高下载速度并减少服务器压力。 在选择下载ISO镜像时,用户需要注意的是选择与自己机器相同或兼容的版本。例如,如果用户使用的是64位系统,那么选择64位版本的ISO镜像进行下载。另外,在下载过程中,用户需要注意网络连接的稳定性,因为如果下载过程中出现中断或错误,可能会导致ISO文件损坏或不完整。 总之,SUSE 15 ISO下载非常简单,只需前往SUSE官网下载页面,选择相应的ISO版本和下载源,然后等待下载完成即可。同时,用户需要注意选择合适的版本并保证网络连接的稳定性,以确保安装介质的完整性和有效性。