zoukankan      html  css  js  c++  java
  • 树莓派 Qt5.7交叉编译

    一、准备软件
        1.2016-11-25-raspbian-jessie.img(官网下载)
        2.cross-compile-tools-master.zip
        3.gcc-4.7-linaro-rpi-gnueabihf.tbz
        4.qt-everywhere-opensource-src-5.7.1.tar.gz(官网下载)
        中间2.3百度网盘分享:https://pan.baidu.com/s/1jH7zRmA
    二、步骤
        1.前几步参照,(创建文件夹,挂载,下载软件请看准备软件,他提供的git链接已经不能用了),http://wiki.qt.io/RaspberryPi_Beginners_Guide。
        2.当挂载完成后,请进入cd /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/查看两个so文件,命令ls -l libdl.so 和ls -l libm.so,看清其指向的文件是否如lrwxrwxrwx 1 root root 13 Jan 10 15:30 libdl.so -> libdl-2.19.so ,如果不是,先删除原来的软连接(sudo rm libdl.so),执行sudo ln -s libdl-2.19.so libdl.so(重新建立软连接),如果arm-linux-gnueabihf文件夹下不存再libdl-2.19.so,看看刚才ls命令其指向的文件在哪,拷贝至此即可,对于libm同样操作,原因:防止出现:undefined reference to `__dlopen’等问题,参照http://blog.csdn.net/scylhy/article/details/52818779。
        3.Compiling qtbase
        ①cd ~/opt/cross-compile-tools
        ②sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc

        ③cd ~/opt/qt-everywhere-opensource-src-5.7.1/qtbase folder and run:
        ./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi
        上步执行后,qtbase文件夹下将出现一个config.summary,打开后修改FontConfig=yes,libinput=yes,udev=yes
    接着执行
        ④make -j 4
        ⑤sudo make install
        ⑥cd ~/opt/qt-everywhere-opensource-src-5.7.1/
        ⑦执行如下命令
        for MODULE in qtimageformats qtsvg  qtscript qtxmlpatterns qtdeclarative qtsensors qt3d qtgraphicaleffects  qtlocation ; do  cd $MODULE;  /usr/local/qt5pi/bin/qmake .;  make -j4;  sudo make install;  cd ..; done
        4. cd~/opt/
           sync; sudo umount /mnt/rasp-pi-rootfs (取消挂载)
           sudo dd bs=1M if=2016-11-25-raspbian-jessie.img of=/dev/sdb; sync (烧录至内存卡)
           到此就完成了交叉编译的环境配置
        
    三、qtcreator的配置
        参照http://www.cnblogs.com/duzezhou/p/5692016.html

        唯一需要注意的是,电脑写程序的时候依然需要先挂载sudo mount -o loop,offset=70254592 2016-11-25-raspbian-jessie.img /mnt/rasp-pi-rootfs,需要用到其中的库

        qtcreator .pro文件要写上下边两句,要不然无法运行,提示找不到远程路径
        target.path = /home/pi/test
        INSTALLS += target

    四、程序只能全屏显示
        如果程序下载至raspberry中只能全屏,不要怀疑,并没有出问题,从qt5开始后,使用qpa,platform有eglfs,linuxfb等等,其中eglfs默认full screen显示,如果想窗口显示,用linuxfb模式,在运行程序时加上后缀,如./test -platform linuxfb。官网地址有详细说明:http://doc.qt.io/qt-5/embedded-linux.html

    五、如果提示缺少字体

          将字体放至电脑/usr/lib/fonts(如果没有fonts目录,自己新建一个,然后把下载的ttf字体放入),并且拷贝字体至树莓派/usr/local/qt5pi/lib下,然后项目中修改如下即可

    1. QApplication a(argc, argv);  
    2. QFont font("fangsong", 16);  
    3. a.setFont(font);  

         参照:http://wiki.qt.io/RaspberryPi_Beginners_Guide
         http://blog.csdn.net/scylhy/article/details/52818779
         http://www.cnblogs.com/duzezhou/p/5692016.html   

    http://blog.csdn.net/xueyeguiren8/article/details/54345013

  • 相关阅读:
    常用变量的获取
    批出里中常用参数的含义
    利用批处理命令复制指定文件到指定目录下
    跟后台打印程序系统服务通讯时出现错误。请打开服务管理单元,确认后台打印程序服务是否在运行。
    系统日志报错i8042prt无法加载
    删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件:字符串截取
    删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件:BAT + VBS
    Linux学习笔记
    Docker
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/findumars/p/6399795.html
Copyright © 2011-2022 走看看