1、源码下载和解压
(1)源码下载目录:http://download.qt.io/archive/qt/
(2)创建工作目录,并解压
/home/liu/qt/qt5.6# mkdir install_package
(3)创建安装目录
/home/liu/qt/qt5.6# mkdir install_file
2、配置
(1)配置相应的qmake
所在文件为 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
添加:
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 -ldl
QMAKE_CXX = arm-linux-g++ -lts -ldl
QMAKE_LINK = arm-linux-g++ -lts -ldl
QMAKE_LINK_SHLIB = arm-linux-g++ -lts -ldl
# 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 /home/liu/qt/qt5.6/install_file (安装目录名) \
-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
3、编译中的错误解决
(1)找不到dlopen或者dlsym
在编译器后面加ldl arm-linux-g++ -ldl
(2)undefined reference to `__sync_add_and_fetch_4'
参考http://www.mamicode.com/info-detail-1699895.html
# mkdir linux_atomic
# cd linux_atomic/
# cp /mnt/hgfs/朱有鹏/a/linux-atomic.c ./
apt-get install libtool
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所以是隐藏的
# mkdir linux_atomic
/home/liu/qt/qt5.6/install_file# cd linux_atomic/
/home/liu/qt/qt5.6/install_file/linux_atomic# cp ../../install_package/linux_atomic/.libs/liblinux-atomic.a ./
在QT源码下修改:./qtscript/src/script/Makefile
在LIBS = 的结尾添加 -L /home/liu/qt/qt5.6/install_file/linux_atomic -llinux-atomic
/opt/linux-atomic