移植QT5.6.2到X210开发板

上一篇已经将tslib移植到开发板上并且已经正常工作了,下一步就是移植QT到开发板,距离在开发板上实现QT应用程序就差这一步了。接下来就是移植QT了。
QT源码及各种资源的下载主站:http://download.qt.io/archive/qt/
里面有各个版本的QT,但是因为我开发板上一直使用的是三星当时使用的arm-2009q3的工具链,该版本工具链是使用的还是c++98,但是现在最新的QT版本已经使用c++14等高版本,不在支持98这样的老版本。所以移植选择的版本是5.6.2,5.6是最后支持98的版本。所以接下来移植该版本到开发板。
第一步:下载资源,选择上面网站里面的5.6.2 里面的qt-everywhere-opensource-src-5.6.2.tar.gz,网址如下:
http://download.qt.io/archive/qt/5.6/5.6.2/single/

然后将该压缩包传到我的Ubuntu16.04的虚拟机中,解压该文件

tar -xvf qt-everywhere-opensource-src-5.6.2.tar.gz

先创建一个安装目录/home/tt/work/qt5.6.2

mkdir qt5.6.2

然后配置qmake,QT支持多平台,配置qmake类似kernel中配置单板
修改 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

//添加
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE   += -O2  -march=armv7-a     //指定芯片架构S5PV210是armv7架构
QMAKE_CXXFLAGS_RELEASE += -O2  -march=armv7-a

//然后修改交叉编译工具链为自己使用的工具链
# modifications to g++.conf
QMAKE_CC = arm-linux-gcc    -lts           //-lts   依赖之前移植的tslib
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs 
QMAKE_OBJCOPY = arm-linux-objcopy 
QMAKE_NM = arm-linux-nm -P
QMAKE_STRIP = arm-linuxi-strip 

然后就是编译之前对源码进行配置

./configure  -prefix /home/tt/work/qt5.6.2  \                    //指明安装目录
  -opensource  \
  -confirm-license \
  -release  \
  -shared  \
  -accessibility \
-c++std c++98 \                                                           //c++标准
  -xplatform linux-arm-gnueabi-g++ \                          //使用的哪个平台的qmake
-qpa linuxfb \
-linuxfb \
-qreal float \
-pch \
-qt-zlib \
  -qt-libjpeg \
          -qt-libpng \
-no-sse2 \
          -no-largefile \
          -no-qml-debug \
          -no-glib \
-no-gtkstyle \
  -no-opengl \
  -nomake tools \
  -nomake examples \
  -tslib \
  -skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland \
  -I /opt/tslib/include \                            //tslib相关头文件和库
  -L /opt/tslib/lib

配置完成后执行make -j8
编译后报错找不到dlopen或者dlsym
解决办法:
在编译器后面加ldl arm-linux-g++ -ldl

QMAKE_CXX = arm-linux-g++ -lts  -ldl
QMAKE_LINK = arm-linux-g++ -lts -ldl
QMAKE_LINK_SHLIB = arm-linux-g++ -lts -ldl

继续make
报错undefined reference to `__sync_add_and_fetch_4’
查找资料是因为缺少liblinux-atomic.a,该库是linux-atomic.c文件生成的,该文件是在gcc工具链中。利用.c文件生成.a文件指令如下:

  libtool --tag=CC --mode=compile arm-linux-gcc -g -O2 -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c 
  libtool --tag=CC --mode=link arm-linux-g++ -g -O2 -o liblinux-atomic.la linux-atomic.lo

我是将.c文件放到/home/tt/work/linux-atomic文件夹下执行指令的
然后在QT源码下修改:qtscript/src/script/Makefile,注意该文件是在make以后生成的!
在LIBS = 的结尾添加 -L/home/tt/work/linux-atomic -llinux-atomic
然后继续make应该没有问题了,然后执行make install就可以在安装目录/home/tt/work/qt5.6.2下面生成我们的QT库等一系列文件了。
接下来只需要将QT库部署到开发板根文件系统中以后就可以执行QT的应用程序了。

发布了27 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_24622489/article/details/87866287
今日推荐