X210学习--QT移植(2)_QT5.6.2配置和交叉编译

准备工作

1、参考 X210学习–QT移植(1)_tslib移植
2、源码下载 (这里我用的是 qt-everywhere-opensource-src-5.6.2.tar.gz),放到相应目录下并解压
3、创建安装目录,如/opt/QT5.6.2

开始配置

1、配置相应的qmake
在解压的源码目录下

sudo vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 

修改如下内容

#added 编译zcc
QT_QPA_DEFAULT_PLATFORM = linuxfb #屏
QMAKE_CFLAGS_RELEASE   += -O2  -march=armv7-a   
QMAKE_CXXFLAGS_RELEASE += -O2  -march=armv7-a
# modifications to g++.conf
QMAKE_CC = arm-linux-gcc -lts #注意这里的编译工具名称要跟实际安装的交叉编译工具保持一致
QMAKE_CXX = arm-linux-g++ -lts #后面加 -lts ,意思是连接tslib库
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 

2、编译前配置(可在源码目录下,执行./configure --help 按其中的提示来配置)
根据提示,在源码目录下执行:

./configure  -prefix /opt/QT5.6.2  \
  -opensource  \
  -confirm-license \
  -release  \
  -shared  \
  -accessibility \
-c++std c++98 \
  -xplatform linux-arm-gnueabi-g++ \
-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 \
  -L /opt/tslib/lib

出现错误1:

make: g++: Command not found
.make: *** [Makefile:187: project.o] Error 127

这是没有安装g++导致,安装g++即可

sudo apt-get install g++

然后,再次上面的配置脚本,配置成功后,即可进行编译。

3、编译
源码目录下: make

时间很长。。。

出现错误1:
X210学习--QT移植(2)_QT5.6.2配置和交叉编译
解决方法:

sudo vi   qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

加上:

# modifications to g++.conf
QMAKE_CC                = arm-linux-gcc -lts -ldl
QMAKE_CXX               = arm-linux-g++ -lts -ldl
QMAKE_LINK              = arm-linux-g++ -lts -ldl
QMAKE_LINK_SHLIB        = arm-linux-g++ -lts -ldl

再次编译:make -4

出现错误2:sh: 1: python: not found Project ERROR: Building QtQml requires Python.
提示没有安装python 。

解决方法:
查一下有没有安装,which python3,发现已经安装了。
如果没安装就要进行安装:

sudo apt install python3.8

应该是
找到资源包并放置在/usr/bin/python
sudo cp -r /usr/bin/python3 /usr/bin/python
或者连接python -> python3

再次编译
出现错误 :undefined reference to__sync_add_and_fetch_4’`

解决方法:参考http://www.mamicode.com/info-detail-1699895.html

apt-get install libtool

在/opt/下创建一个目录 linux-atomic/
创建一个目录 ,把 linux-atomic.c 拷贝到该目录下,然后执行下面语句

  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

利用libtool生成liblinux-atomic.a,注意生成的目录名叫.libs所以是隐藏的

执行:

cp .libs/liblinux-atomic.a /opt/linux-automic
// 注意/opt/linux-automic是自己事先创建的

在QT源码目录下修改:vi ./qtscript/src/script/Makefile
在LIBS = 的结尾添加 -L/opt/linux-atomic -llinux-atomic

重新编译。成功!

然后执行 sudo make install 安装。安装的内容在/opt/QT5.6.2 (之前配置的路径)目录下。

上一篇:ARM系列之ARM 平台安全架构PSA 固件框架


下一篇:ssc335 — 开发环境搭建以及Demo示例