当前位置: 首页>编程语言>正文

中标麒麟V10 sp2 安装nginx html文件位置 中标麒麟安装qt


中标麒麟V7 64bit 配置 Qt 32/64 bit

  • 基本环境
  • 1. 系统:中标麒麟 / CentOS7
  • 2. Qt:Qt-5.5.1-32位/Qt-5.13.1-64位
  • 配置步骤
  • 1. 配置32位编译环境
  • 2. 安装Qt 64/32 bit
  • 3. freetype 和 dbus
  • 4. gdb 和 cmake
  • 5. 套件配置
  • 6. 测试


基本环境

1. 系统:中标麒麟 / CentOS7

当前系统为 NeoKylin Linux Advanced Server V7Update4 64bit,基于CentOS7

2. Qt:Qt-5.5.1-32位/Qt-5.13.1-64位

在线安装包:qt-unified-linux-x64 使用在线安装包可以减少维护工具更新的次数和一些奇怪的问题。

配置步骤

1. 配置32位编译环境

  • 配置
    CentOS 7 64位系统是没有32位编译环境的,所以需要先行配置。如果没有32位编译环境的话,在编译32位程序时会报<gnu/stubs-32.h>头文件的错误。
yum install -y glibc-devel.i686
yum install -y libsdtc++-devel.i686
  • 提示
    在安装libsdtc++-devel.i686时可能会报各种已有依赖的错误,用yum把这些依赖的都删了然后重试即可
  • 测试
    安装完后,我们写一个HelloWorld.cpp,然后用g++去编译它
g++ -m32 HelloWorld.cpp -o HelloWorld

没有报错即是成功

2. 安装Qt 64/32 bit

由于我们使用的是64位在线安装包,所以还需要加上32位的存储库(资料档案库)。

我们打开安装程序,在左下角找到设置,然后打开存储库选项,在用户存储库里加上中科大的镜像链接:

http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/linux_x86/root/qt/ 这样我们就可以同时安装64位和32位Qt了。

Qt对于32位Linux的支持只到5.5.1,再往后就得自己编译了。

我们找到目前的最高版本5.13.1,勾上gcc、source和debug info,其他的按需添加即可。

32位版本最高只到5.5.1,我们勾上gcc和source。

然后一路狂奔。

中标麒麟V10 sp2 安装nginx html文件位置 中标麒麟安装qt,中标麒麟V10 sp2 安装nginx html文件位置 中标麒麟安装qt_交叉编译,第1张

3. freetype 和 dbus

  • freetype
    安装完Qt之后,我们在终端打开QtCreator,发现报错
libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format
  • 这是缺失了freetype的库。
    用yum检查过,发现本机上已经有freetype了,但是版本比较旧,我们也不需要强行升级它,只需要它的库就行了,所以我们下载它的最新源码,编译安装后把库复制到QtCreator的lib里去就行。
    如果直接替换系统库的话可能破坏系统,造成不必要的损失!本来之前我是直接替换的,直到重装了N次……
    configure的时候可能会警告说需要安装docwriter,但是这个不影响,我们忽略掉它。
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.10.0.tar.bz2
tar xvfz freetype-2.10.0.tar.bz2
cd freetype-2.10.0
./configure --prefix=/opt/freetype-2.10.0
make && make install
cp /opt/freetype-2.10.0/lib/libfreetype.so.6.17.0 /opt/Qt/Tools/QtCreator/lib/Qt/lib/
cd -
cd /opt/Qt/Tools/QtCreator/lib/Qt/lib/
ln -sf libfreetype.so.6.17.0 libfreetype.so.6
ln -sf libfreetype.so.6.17.0 libfreetype.so
cd -
  • dbus
    我们再次通过终端打开QtCreator,发现还是报错

version LIBDBUS_1_3 not defined in file libdbus-1.so.3 with link time reference

  • 这个是dbus库的问题,我们还是像freetype一样编译安装复制到QtCreator的库目录里
    编译dbus,我们首先需要安装expat,这个我们可以通过yum安装
yum install -y expat-devel

wget https://dbus.freedesktop.org/releases/dbus/dbus-1.13.12.tar.xz
xz -d dbus-1.13.12.tar.xz
tar xvf dbus-1.13.12.tar
cd dbus-1.13.12
./configure --prefix=/opt/dbus-1.13.12
make && make install
cp /opt/dbus-1.13.12/lib/libdbus-1.so.3.26.1 /opt/Qt/Tools/QtCreator/lib/Qt/lib/
cd -
cd /opt/Qt/Tools/QtCreator/lib/Qt/lib/
ln -sf libdbus-1.so.3.26.1 libdbus-1.so.3
ln -sf libdbus-1.so.3.26.1 libdbus-1.so
cd -

安装完后我们就可以成功打开QtCreator了

  • 32位的freetype和dbus可以直接用yum安装,这个版本直接用yum的版本就好,不需要编译最新代码
yum install -y freetype-devel.i686
yum install -y dbus-devel.i686

安装完后之前创建的软链接可能会被重新指向,最好检查以下,再指向一次

  • 参考链接 http://www.pianshen.com/article/3003418461/

4. gdb 和 cmake

我们打开QtCreator的菜单-工具-选项,找到里面的套件,可以看到套件上有黄色三角符号,像这样

中标麒麟V10 sp2 安装nginx html文件位置 中标麒麟安装qt,中标麒麟V10 sp2 安装nginx html文件位置 中标麒麟安装qt_python_02,第2张

按照上面的描述,我们需要安装合适版本的CMake和gdb。

参考链接:

  • gdb-8.3
    安装前需要先安装texinfo,用yum即可。
    如果已经安装了python-2.7但还是报错找不到可用的python,安装python-devel即可。
yum install -y texinfo python-devel

wget ftp://sourceware.org/pub/gdb/releases/gdb-8.3.tar.xz
xz -d gdb-8.3.tar.xz
tar -xvf gdb-8.3.tar
cd gdb-8.3
./configure --prefix=/opt/gdb-8.3/ --with-python='/usr/bin/python2.7'
make && make install
  • cmake-3.14.4
wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
tar -xvf cmake-3.14.4.tar.gz
cd cmake-3.14.4
./bootstrap --prefix=/opt/cmake-3.14.4/
make && make install

5. 套件配置

  • 安装完gdb和cmake后,我们在刚刚的界面的debugger和cmake页面上配置好刚安装的gdb和cmake,点击应用。然后在套件页面,把这两个配置上去。可以看到64位套件已经正常,但是32位套件还是有警告,按照说明是没有合适的gcc。
  • 64位系统里的gcc默认是64位,所以我们需要把GCC的能力集改为32位的。在旁边的编译器页面上,把C/C++的GCC分别克隆一下,改下名,比如GCC_32。在属性的最下面的ABI选项里,在最后面有个位数的选项,我们看到现在上面的是64,我们把它改成32位即可。两个GCC都改完后,点击应用。然后切换回套件页面,把GCC_32配置到32位套件即可。

6. 测试

  1. 套件配置完后,我们写个HelloWorld测试一下。
    64位顺利通过,但是32位报了错。

    按照描述,应该是32位编译系统不完整,缺少了glib2
yum install -y glib2.i686

安装完glib2之后就可以顺利编译了。
编译后我们找到生成的应用程序文件,用objdump -a查看其位数,对应上即为成功

  1. 我们再写个窗口测试一下
    这时发现64位编译失败,报的错误是找不到-lGL,这是openGL的库,我们安装一下
    或者也可以参考这篇文章,去掉-lGL的链接选项
yum install -y mesa-libGL-devel mesa-libGL-devel.i686

安装完之后64位顺利启动,但是32位的又出问题了。

This application failed to start because it could not find or load the Qt platform plugin “xcb”.
Available platform plugins are: linuxfb, minimal, offscreen, xcb.
Reinstalling the application may fix this problem.

我们进入32位QT目录里的 /opt/Qt/5.5/gcc/plugins/platforms/,这里面有4个库,就是上面提到的。
我们用ldd查看以下依赖关系,给找不到的都安装一下,用yum就行。

yum install -y libXrender.i686
yum install -y libICE-devel.i686 
yum install -y libXi-devel.i686
yum install -y libSM-devel.i686

如果有不认识的库,可以用yum search找一下。也可以去https://pkgs.org/download/把库名打上去找,去掉版本号加上devel就是开发版的库名。

安装完之后32位的窗口也顺利启动,大功告成。


https://www.xamrdz.com/lan/5u31962197.html

相关文章: