QT5.6.2配置和交叉编译

1.源码下载和解压

源码目录:
(1)源码下载目录:/mnt/hgfs/windows_share/clock_project/qt_source/qt-everywhere-opensource-src-5.6.2.7z
(2)创建工作目录,并解压 /home/aston/qt5.x_porting/qt5.6.2
(3)创建安装目录 /opt/qt5.6.2

2.配置

(1)配置相应的qmake
vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
//找到和我们的很像的linux-arm-很像,所以我们基于这个改
打开这个文件,添加如下内容

#aston added
QT_QPA_DEFAULT_PLATFORM = linuxfb   
#linuxfb表示非窗口的配置
QMAKE_CFLAGS_RELEASE   += -O2  -march=armv7-a #armv7-a  表示机器架构: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  -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-linux-strip 

(2)编译前配置(可以参考./configure –help的提示来配置)

//注意\后面什么都不能有连空格都不行,不然容易出错
/******************命令的解释**********************/
./configure  -prefix /opt/qt5.6.2  \ 这个目录一定是自己创建的哪个
  -opensource  \        开源的
  -confirm-license \    设置license
  -release  \           release版本不是debug的版本
  -shared  \            分享的
  -accessibility \      没研究过
-c++std c++98 \         设置c++的标准为98而导致了qt的版本不能太高
  -xplatform linux-arm-gnueabi-g++ \ //linux-arm-gnueabi-g++决定了要到qtbase/mkspecs/linux-arm-gnueabi-g++目录的qmake.conf去编译
-qpa linuxfb \          使用linuxfb
-linuxfb \
-qreal float \
-pch \
-qt-zlib \
  -qt-libjpeg \         添加libjpeg这个库
          -qt-libpng \
-no-sse2 \              去掉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 \       -I表示编译时去找头文件的地址
  -L /opt/tslib/lib             导出lib的共享库

/*********************************************/

命令:

./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

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

把linux-atomic.c复制到/home/aston/qt5.x_porting/linux_atomic中执行
  #apt-get install libtool-bin
  #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目录中生成的),注意生成的目录名叫.libs所以是隐藏的

  cp .libs/liblinux-atomic.a /opt/linux-atomic  
  // 注意/opt/linux-atomic是自己事先创建的
  在QT源码下修改:./qtscript/src/script/Makefile
  在LIBS  = 的结尾添加 -L/opt/linux-atomic -llinux-atomic

4. make install 安装即可

5.安装qt-opensource-linux-x64-5.6.2.run到/opt/QT5.6.2_Untu_SDK中
/opt/QT5.6.2_Untu_SDK/Tools/QtCreator/bin 执行qtcreator
5.1配置交叉编译工具
这里写图片描述
这里写图片描述
这里写图片描述

本博客出自朱老师X210上QT5.6.2移植和开发环境搭建

猜你喜欢

转载自blog.csdn.net/m0_37182543/article/details/80287140