小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

qt5.6移植到arm和arm64

 XeonGate 2019-05-30

https://www./118646.html

源碼包下載
鏈接:http://pan.baidu.com/s/1slyKG6D 密碼:seh2

///////qt5.6移植
1.解包qt-everywhere-opensource-src-5.6.1.tar.gz

配置好交叉編譯器.
2.修改交叉編譯器, vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
    QMAKE_CC                = arm-linux-gnueabihf-gcc
    QMAKE_CXX               = arm-linux-gnueabihf-g++
    QMAKE_LINK              = arm-linux-gnueabihf-g++
    QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

    # modifications to linux.conf
    QMAKE_AR                = arm-linux-gnueabihf-ar cqs 
    QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
    QMAKE_NM                = arm-linux-gnueabihf-nm -P
    QMAKE_STRIP             = arm-linux-gnueabihf-strip


3.配置QT
    ./configure -prefix /usr/local/qt-5.6-arm -release -xplatform linux-arm-gnueabi-g++ -make libs -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng 


4. make -j4 
   make install
///////

5. QT編譯,安裝完成后, 在/usr/local/qt-5.6-arm里
   在QT creator里增加一個(gè)arm構(gòu)件
   1)   QT creator打開后, 菜單Tools --> Options --> Build & Run(左邊欄) --> Compilers(右邊的頁(yè)框) --> add(選gcc)
      顯示配置界面后, name : arm-gcc
                        compiler path: arm-linux-gnueabihf-g++交叉編譯器的路徑
      完成后,點(diǎn)右下角的apply

   2) 接著點(diǎn)擊頁(yè)框("Qt version") --> add --> 彈出界面后選擇/usr/local/qt-5.6-arm/bin/qmake
      完成后,點(diǎn)擊apply

   3) 接著點(diǎn)擊頁(yè)框("Kits") --> add 彈出界面后,
    name     : qt-arm
    Compiler : arm-gcc
        Qt version: qt-5.6-arm
    完成后,點(diǎn)擊確認(rèn)保存退出

6. 嵌入式文件系統(tǒng)的QT環(huán)境配置:
  1)  把PC上的/usr/local/qt-5.6-arm整個(gè)目錄復(fù)制到網(wǎng)絡(luò)文件系統(tǒng)的usr/local目錄里

  2)  配置網(wǎng)絡(luò)文件系統(tǒng)的環(huán)境變量.
      在網(wǎng)絡(luò)文件系統(tǒng)etc/profile文件里增加內(nèi)容:
    export QTDIR=/usr/local/qt-5.6-arm
    export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
    export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
    export QT_QPA_FONTDIR=$QTDIR/lib/fonts
    export QT_QPA_GENERIC_PLUGINS=evdevtouch:dev/input/event0
    export QT_QWS_FONTDIR=$QTDIR/lib/fonts/
       export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event?
       #export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
    export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event?
    export set LD_LIBRARY_PATH=$QTDIR:$QTDIR/lib/:$QT_QPA_PLATFORM_PLUGIN_PATH:$QT_QPA_FONTDIR:$LD_LIBRARY_PATH

      配置完后成后,重啟板子才會(huì)生效?;蛘?quot;source /etc/profile"

////////////////////////////
設(shè)置QT鼠標(biāo),鍵盤的環(huán)境變量:
通過(guò)“cat /proc/bus/input/devices” 查看對(duì)應(yīng)的設(shè)備文件是哪個(gè)event

在板子文件系統(tǒng)的/etc/profile里修改環(huán)境變量
 export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event?
 export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event?

重啟板子,以便環(huán)境變量生效。生效后,QT程序界面即可出鼠標(biāo)

在板上執(zhí)行Qt程序時(shí)會(huì)發(fā)生iconv工具的錯(cuò)誤:

root @_@ # ./build-untitled-qt_arm-Debug/untitled 
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

解決移植libiconv工具庫(kù):
解包libiconv-1.14.tar.gz后,進(jìn)入源碼根目錄:

./configure --host=arm-linux-gnueabihf --prefix=`pwd`/libs

make && make install

完成后,從./libs/lib/目錄里復(fù)制preloadable_libiconv.so到板上文件系統(tǒng)的/lib目錄

然后還需要在板上文件系統(tǒng)的/etc/profile文件里配置一個(gè)環(huán)境變量:

export LD_PRELOAD=/lib/preloadable_libiconv.so

完成以上操作后,再次執(zhí)行qt程序就不會(huì)報(bào)關(guān)于iconv的錯(cuò)誤了



移植到arm64架構(gòu)的系統(tǒng)上時(shí),需要使用是剛解包得到的源碼才可以。 make distclean清除不干凈上次編譯的.o文件,否則會(huì)發(fā)生”incompatible xxxx”的錯(cuò)誤.

修改使用arm64交叉編譯器, vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

    QMAKE_CC                = aarch64-linux-gnu-gcc
    QMAKE_CXX               = aarch64-linux-gnu-g++
    QMAKE_LINK              = aarch64-linux-gnu-g++
    QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++

    QMAKE_AR                = aarch64-linux-gnu-ar cqs 
    QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
    QMAKE_NM                = aarch64-linux-gnu-nm -P
    QMAKE_STRIP             = aarch64-linux-gnu-strip

還是一樣的配置:

./configure -prefix /usr/local/qt-5.6-arm -release -xplatform linux-arm-gnueabi-g++ -make libs -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng

執(zhí)行make, 編譯qt源碼時(shí), 會(huì)發(fā)生錯(cuò)誤:
.obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/dec.o:dec.c:function VP8DspInit: error: undefined reference to ‘VP8DspInitNEON’
.obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/enc.o:enc.c:function VP8EncDspInit: error: undefined reference to ‘VP8EncDspInitNEON’
.obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/lossless.o:lossless.c:function VP8LDspInit: error: undefined reference to ‘VP8LDspInitNEON’
.obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/upsampling.o:upsampling.c:function WebPInitUpsamplers: error: undefined reference to ‘WebPInitUpsamplersNEON’
collect2: error: ld returned 1 exit status


解決辦法, 修改qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h文件:
68 //#define WEBP_USE_NEON //注釋第68行后就可以編譯通過(guò)

編譯完成后,執(zhí)行”make install”就會(huì)把a(bǔ)rm版的qt工具及動(dòng)態(tài)庫(kù)安裝到”/usr/local/qt-5.6-arm”目錄里.


在qt-creator配置圖示:
QT creator打開后, 點(diǎn)擊菜單Tools后,進(jìn)入設(shè)置編譯器界面:
這里寫圖片描述

接著增加一個(gè)arm版本的配置:
這里寫圖片描述

最后再設(shè)置一個(gè)arm版本的套件:
這里寫圖片描述


以上配置完成后, 新創(chuàng)建工程時(shí),就可以qt-arm的版本了。也可以在下面界面里的”Add kit”里增加arm版本:
這里寫圖片描述


為了節(jié)約空間,也可以僅把qt程序所需的動(dòng)態(tài)庫(kù)移到嵌入式文件系統(tǒng)里, 查看所需的動(dòng)態(tài)庫(kù)可以用ldd, 沒有l(wèi)dd命令可以用readelf查看:
aarch64-linux-gnu-readelf -a qt-test | grep “l(fā)ibrary”

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多