前言
如果在Ubuntu上使用qt开发可移植到周立功开发板的应用程序,需要在Ubuntu上交叉编译用于移植的Qt库,具体做法如下:
1、下载源码
源码qt-everywhere-opensource-src-5.9.6.tar.xz拷贝到ubuntu自建的software文件下
2、解压
点击提取到此处
3、安装配置
运行脚本文件进行安装配置。
3.1 创建脚本
进入qt-everywhere-opensource-src-5.9.6目录,创建脚本,脚本名称自己定义build.h,编写内容。可以参考周立功原系统中提供的脚本文件(虚拟机打开的镜像work文件下)
内容如下:
将该文件复制到qt-everywhere-opensource-src-5.9.6目录下。
双击打开,按i键进入到插入模式,然后对其修改保存,修改后内容如下:
此处仅对安装路径进行修改。-I和-L(链接库)作用是引用触摸屏的头文件和库文件。
按esc退出插入模式,输入:wq!保存退出。
电子版如下:
#!/bin/bash
./configure \
-prefix /opt/qt-5.9.6_new \
-v \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib -tslib \
-no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-xcb \
-no-separate-debug-info -nomake examples \
-nomake tools -nomake tests -no-iconv -no-dbus \
-I /opt/tslib_new/include \
-L /opt/tslib_new/lib
3.2 修改qmake.conf文件
找到路径:/qt-everywhere-opensource-src-5.9.6/qtbase/mkspecs/linux-arm-gnueabi-g++
如图,双击打开
修改前
参考周立功提供的qmake.conf文件
修改后
电子版
# qmake configuration for building with arm-linux-gnueabi-g++
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -march=armv7-a -mtune=cortex-a7
QMAKE_CXXFLAGS += -march=armv7-a -mtune=cortex-a7
QMAKE_INCDIR = /opt/tslib/include
QMAKE_LIBDIR = /opt/tslib/lib
# modifications to g++.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++
# modifications to linux.conf
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
load(qt_config)
4、执行自己编写的脚本文件生成makefile文件
进入/qt-everywhere-opensource-src-5.9.6目录
执行脚本文件build.sh
执行:
./build.sh
回车,等待几分钟,等待完成。
运行完出现注意事项,不影响继续
5、输入make
等待完成时间约X小时
不允许出现error,如果出现,最好修改后重新解压,编译
6、输入make install
7、查看安装目录下生成的文件
安装路径为配置文件自己定义的地址。
查看include文件夹下
完成
8、编译错误记录
8.1 脚本错误
1、错误1截图:
如果提示错误,需要进行修改:
ERROR: Invalid value given for boolean command line option ‘sql-sqlite’.
错误:为布尔命令行选项“sql sqlite”提供的值无效。
ERROR: Unknown command line option ‘-no-c++11’.
错误:未知的命令行选项“-no-c++11”。
错误1解决:
更改:
-qt-sqlite
-c++std c++11 \
2、格式错误:
每次换行 需要结尾输入\ ,\后面不允许出现其他字符空格等。
8.2 make错误
错误原因:采用自己搭建的linux系统,有些工具或库没有安装,需要安装。
针对出现的错误,进行安装。
可能出现错误,举例如下:
错误1:
sh: 1: python: not found
Project ERROR: Building QtQml requires Python.
Makefile:333: recipe for target ‘module-qtdeclarative-make_first’ failed
make: *** [module-qtdeclarative-make_first] Error 3
解决1:
安装Python:
sudo apt-get install swig python-dev python3-dev
其他错误
安装工具:
Sudo apt-get install pkg-config
安装库
Sudo apt-get install libx1-dev
通过解决以上,基本上不在报错。
注意:报错后,重新make需要完全删除生成makefile文件,最好重新解压编译。
可以通过make clean进行,但清理不干净。导致报错如:error2 error3.
9、移植
安装成功后, 应可以在安装目录下查看到相关的文件,本文示例的安装路径为
/opt/qt-5.9.6_new, 可在该目录下看到 bin、 imports、 include、 lib、 mkspec、 plugins、 translations等新目录。
只需要移植 lib 和 plugins,本文示例的 Qt 安装路径在移植系统的根文件系统下(rootfs/usr/local/qt-5.9.6)