无互联网条件下安装QT,参考了龙火战狼的帖子银河麒麟(Kylin)完整移植Qt5.9.2
和jklinux的帖子qt5.6移植到arm和arm64

补充一下细节:
arm64银河麒麟4.0.2
zlib版本,采用1.2.8
cmake版本3.5.2
1.修改交叉编译器:

vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

QMAKE_AR                = arm-linux-gnueabihf-ar cqs 
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip

修改为:

QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++

QMAKE_AR                = aarch64-linux-gnu-ar cqs 
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip

2.修改qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h文件:

//#define WEBP_USE_NEON //注释后就可以编译通过,位置约在73行
若未进行该步,则可能编译出现以下三种问题:


以下问题可能是由于make clean未完全清除造成的

3.配置QT源码时,参数为:
./configure -nomake tests -nomake examples -qt-xcb(否则要安许多xcb相关的库,有网可不选)
4.make和make install
make时间较长,三小时左右,建议make和make install都重定位,方便查错。
我遇到了qdoc的提示,但可以不用管它。
5.环境变量的配置

    vim /etc/.bash.bashrc
    在其最后添加以下信息
    export QTDIR=/usr/local/Qt-5..5.1
    export PATH=$QTDIR/bin:$PATH
    export MANPATH=$QTDIR/man:$MANPATH
    export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

再修改所有用户环境变量

    vim /etc/profile
    在其最后添加以下信息
    export QTDIR=/usr/local/Qt-5.5.1
    export PATH=$QTDIR/bin:$PATH
    export MANPATH=$QTDIR/man:$MANPATH
    export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

6.查看配置是否成功
qmake -v
which qmake
输出 /usr/local/Qt-5.5.1/bin/qmake
则配置成功。

7.Qt creator4.0.0的安***r> 在解压出来的源码文件夹中用arm下的两个文件替换(qt官网和github也能下)。
(否则会出现cpuid.h:没有那个文件或目录)错误
qmake -r
make
make install

8.Qt creator配置
工具–选项–构建和运行
先后配置“编译器”、“Qt version”和“”Kit“
编译器路径一般在/usr/bin/中选择自己使用的交叉编译器,我的是系统自带的aarch64-linux-gun-gcc
Qt version路径在自己安装的Qt目录下,我的在/usr/local/Qt5.5.1/bin目录

9.(可选)使用Mysql或别的数据库时编译库文件
可能是第3步配置选项-qt-xcb的原因,Qt的安装是不完全的,跳过了一些模块的编译。比如数据库只编译了SQLite模块。
如要使用其他模块,还需编译或使用完整安装。这里说明mysql模块的编译:
在源码目录的qtbase/src/plugins/sqldrivers/mysql下执行:
qmake “INCLUDEPATH+=(自己mysql的include目录)” ‘‘LIBS+=(自己mysql的lib目录下的库文件libmysqlclient.so(或别的名字如:libqsqlmysql.so))’’
查看.pro文件是否多了上面加的对应的两句路径,如果没有,手动加入。
INCLUDEPATH+=(自己mysql的include目录)"
LIBS+=(自己mysql的lib目录下的库文件libmysqlclient.so(或别的名字如:libqsqlmysql.so))
保存后在目录下编译
make
编译成功后在Qt源码qtbase/plugins/sqldrivers下生成相应的库文件,把该库文件复制到/usr/local/Qt5.5.1/plugins/sqldrivers/中即可。

10.在Windows下工程移植到麒麟
先重新生成.pro文件。删除后执行qmake -project -QT+=(你需要的模块)