准备工作
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:
解决方法:
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 (之前配置的路径)目录下。