一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ElfBoard技術(shù)貼|如何在ELF 1開發(fā)板上交叉移植Qt

ElfBoard ? 2025-02-24 16:18 ? 次閱讀

嵌入式系統(tǒng)開發(fā)領(lǐng)域,針對特定硬件平臺進(jìn)行Qt框架的移植與適配是一項關(guān)鍵技術(shù)任務(wù)。作為業(yè)界主流的跨平臺應(yīng)用開發(fā)框架,Qt憑借其完善的圖形界面支持能力,在嵌入式開發(fā)圖形界面應(yīng)用程序中占據(jù)重要地位。本文將基于ELF 1開發(fā)板詳細(xì)闡述Qt 5.12 版本的交叉編譯與系統(tǒng)移植方案。

1、源碼下載
Qt5.12可在Qt官網(wǎng)或者GitHub等下載,以下為GitHub鏈接:https://github.com/zhoujun59761/qtsrc512

2、源碼配置修改

(1)解壓源碼包并設(shè)置權(quán)限

elf@ubuntu:~/work$ unzip qtsrc512-master.zip elf@ubuntu:~/work$ chmod 777 -R qtsrc512-master(設(shè)置最大權(quán)限,避免編譯時權(quán)限問題) elf@ubuntu:~/work$ cd qtsrc512-master/

(2)修改qmake.conf配置文件

由于ELF 1開發(fā)板是 ARM 架構(gòu),所以需要修改 qmake.conf 文件以適應(yīng)交叉編譯環(huán)境。編輯文件路徑為 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,并進(jìn)行如下修改。

elf@ubuntu:~/work/qtsrc512-master$ vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

內(nèi)容如下:

# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi QMAKE_CXX = arm-poky-linux-gnueabi-g++ -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi QMAKE_LINK = arm-poky-linux-gnueabi-g++ -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi QMAKE_LINK_SHLIB = arm-poky-linux-gnueabi-g++ -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi QMAKE_CFLAGS = -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard QMAKE_CXXFLAGS = -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard QMAKE_LDFLAGS = -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now # modifications to linux.conf QMAKE_AR = arm-poky-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-poky-linux-gnueabi-objcopy QMAKE_NM = arm-poky-linux-gnueabi-nm -P load(qt_config)

wKgZPGe8KI-ASSOIAAGWnoe7dps892.pngwKgZO2e8KZCATJ99AACbt5R82WA802.png

3、交叉編譯

(1)編寫編譯腳本

由于 configure 生成 Makefile 時需要大量參數(shù),可以編寫一個腳本保存這些配置。首先創(chuàng)建腳本文件 shell.sh。

elf@ubuntu:~/work/qtsrc512-master$ touch shell.sh elf@ubuntu:~/work/qtsrc512-master$ chmod 777 shell.sh

在 shell.sh 中填入以下內(nèi)容(-prefix 后面的路徑需要根據(jù)實際情況修改)。

./configure -prefix /home/elf/work/qtsrc512-master/__install \ -opensource \ -confirm-license \ -release \ -shared \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -c++std c++11 \ --rpath=no \ -pch \ -skip qt3d \ -skip qtactiveqt \ -skip qtandroidextras \ -skip qtcanvas3d \ -skip qtconnectivity \ -skip qtdatavis3d \ -skip qtdoc \ -skip qtgamepad \ -skip qtlocation \ -skip qtmacextras \ -skip qtnetworkauth \ -skip qtpurchasing \ -skip qtremoteobjects \ -skip qtscript \ -skip qtscxml \ -skip qtsensors \ -skip qtspeech \ -skip qtsvg \ -skip qttools \ -skip qttranslations \ -skip qtwayland \ -skip qtwebengine \ -skip qtwebview \ -skip qtwinextras \ -skip qtxmlpatterns \ -make libs \ -make examples \ -nomake tools -nomake tests \ -gui \ -widgets \ -dbus-runtime \ --glib=no \ --iconv=no \ --pcre=qt \ --zlib=qt \ -no-openssl \ --xcb=qt \ --freetype=qt \ --harfbuzz=qt \ -no-opengl \ --libpng=qt \ --libjpeg=qt \ --sqlite=qt \ -plugin-sql-sqlite \ -recheck-all \ -no-strip

(2)執(zhí)行環(huán)境變量

elf@ubuntu:~/work/qtsrc512-master$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

(3)編譯

運行腳本并進(jìn)行編譯。

elf@ubuntu:~/work/qtsrc512-master$ ./shell.sh

執(zhí)行腳本可能會出現(xiàn)以下錯誤。

+ cd qtbase + /home/elf/work/qtsrc512-master/qtbase/configure -top-level -prefix /home/elf/work/qtsrc512-master/__install -opensource -confirm-license -release -strip -shared -xplatform linux-arm-gnueabi-g++ -optimized-qmake -c++std c++11 --rpath=no -pch -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpurchasing -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtwayland -skip qtwebengine -skip qtwebview -skip qtwinextras -skip qtxmlpatterns -make libs -make examples -nomake tools -nomake tests -gui -widgets -dbus-runtime --glib=no --iconv=no --pcre=qt --zlib=qt -no-openssl --xcb=qt --freetype=qt --harfbuzz=qt -no-opengl --libpng=qt --libjpeg=qt --sqlite=qt -plugin-sql-sqlite -recheck-all Please make sure to unset the QMAKESPEC, XQMAKESPEC, QMAKEPATH, and QMAKEFEATURES environment variables prior to building Qt.

這是因為Ubuntu中已經(jīng)有Qt的環(huán)境了,如需解決可以參考提示執(zhí)行如下命令。

elf@ubuntu:~/work/qtsrc512-master$ unset QMAKESPEC XQMAKESPEC QMAKEPATH QMAKEFEATURES

繼續(xù)執(zhí)行shell.sh腳本。

elf@ubuntu:~/work/qtsrc512-master$ ./shell.sh elf@ubuntu:~/work/qtsrc512-master$ make elf@ubuntu:~/work/qtsrc512-master$ make install

編譯完成后,__install 文件夾包含了 Qt 5.12 所需的所有文件。

elf@ubuntu:~/work/qtsrc512-master$ cd __install/ elf@ubuntu:~/work/qtsrc512-master/__install$ ls bin doc examples include lib mkspecs plugins qml

其中,lib文件夾為所需的lib庫,examples文件夾為demo工程。

4、功能測試

(1)打包Qt文件夾

將編譯生成的文件打包。

elf@ubuntu:~/work/qtsrc512-master/__install$ tar -cjvf qt5.12.tar.bz2 *

(2)解壓至開發(fā)板

將打包后的文件放到U盤,拷貝至開發(fā)板并解壓。

root@ELF1:~# tar -mxvf qt5.12.tar.bz2 -C /

(3)執(zhí)行環(huán)境變量

在開發(fā)板上設(shè)置環(huán)境變量,確保 Qt 正常運行。其中export QT_ROOT=/ 為qt5.12文件相關(guān)的路徑(填解壓的路徑)。

export QT_ROOT=/ export QT_QPA_FONTDIR=/usr/share/fonts export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins export QT_PLUGIN_PATH=$QT_ROOT/plugins export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms export QML2_IMPORT_PATH=$QT_ROOT/qml //兩種顯示框架根據(jù)需求進(jìn)行設(shè)置 export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0 //采用Linuxfb顯示框架 export QT_QPA_PLATFORM=xcb:tty=/dev/fb0 //采用x11顯示框架


(4)運行示例應(yīng)用

Linuxfb顯示框架運行 Qt 的示例應(yīng)用進(jìn)行功能測試。

root@ELF1:~# /examples/charts/areachart/areachart

效果如下:

wKgZO2e8KtKAWDzCAACaFlaM06Y953.png

X11 顯示框架運行 Qt 的示例應(yīng)用進(jìn)行功能測試。

root@ELF1:~# export DISPLAY=:0.0 root@ELF1:~# /examples/charts/areachart/areachar

效果如下:

wKgZO2e8KtuALgrYAABbL8jnvyI333.png

經(jīng)過上述一系列步驟就可以順利地將Qt 5.12版本交叉編譯并成功移植至ELF 1開發(fā)板。衷心希望本文能為屏幕前的小伙伴在嵌入式開發(fā)領(lǐng)域的Qt移植工作帶來實質(zhì)性的幫助與指導(dǎo)!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6058

    文章

    44822

    瀏覽量

    644729
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313093
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5389

    瀏覽量

    100902
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    312

    瀏覽量

    38622
收藏 人收藏

    評論

    相關(guān)推薦

    何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境

    本文基于I.MX6ULL芯片的Linux開發(fā)板,介紹如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境,并運行Qt程序進(jìn)行測試
    發(fā)表于 10-10 09:56 ?2807次閱讀

    ElfBoard技術(shù)|如何在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的UART功能

    UART即通用異步收發(fā)器,是一種支持全雙工串行通信協(xié)議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達(dá)8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發(fā)板,實際引出
    的頭像 發(fā)表于 09-25 13:56 ?2628次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如<b class='flag-5'>何在</b>NXP源碼基礎(chǔ)上適配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的UART功能

    ElfBoard技術(shù)|ELF 1開發(fā)板適配攝像頭詳解

    ELF1ELF1S開發(fā)板適配的OV5640攝像頭,集成了CMOS圖像傳感器,作為一款500萬像素級別的攝像頭,不僅能夠支持最高達(dá)2592x1944分辨率的QSXGA圖像輸出,幀率可達(dá)15fps
    的頭像 發(fā)表于 12-27 10:16 ?1101次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>適配攝像頭詳解

    飛凌嵌入式ElfBoard ELF 1板卡-在ELF 1開發(fā)環(huán)境中使用QT Creator進(jìn)行遠(yuǎn)程調(diào)試

    。Qt Creator會通過網(wǎng)絡(luò)連接到遠(yuǎn)程設(shè)備,將調(diào)試信息傳輸回本地環(huán)境。下面將介紹如何在ELF 1開發(fā)環(huán)境中配置
    發(fā)表于 04-30 09:35

    飛凌嵌入式-ElfBoard-項目分享|基于ELF 1S開發(fā)板完成的物聯(lián)網(wǎng)開源項目

    工程師借助ELF 1S開發(fā)板完成的嵌入式物聯(lián)網(wǎng)項目,見證智慧與技術(shù)的火花。 關(guān)于這個項目的思維導(dǎo)圖,如下圖所示: 接下來,將會從云-網(wǎng)-邊-端的物聯(lián)網(wǎng)體系架構(gòu)出發(fā),描述整個開源項目的
    發(fā)表于 05-16 09:12

    飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之移植前的準(zhǔn)備

    ELF 1開發(fā)平臺。 獲取NXP內(nèi)核源碼 在ELF 1的資料包當(dāng)中已經(jīng)提供了下載好的NXP原廠sdk:
    發(fā)表于 01-21 14:30

    技術(shù)分享 | i.MX8M Plus開發(fā)板交叉編譯qt5.15.2

    為了滿足客戶在啟揚i.MX8MPlus開發(fā)板使用過程中編譯qt版本的需求,這里小編出一期關(guān)于i.MX8MPlus開發(fā)板交叉編譯qt5.15.
    的頭像 發(fā)表于 11-18 09:35 ?1893次閱讀
    <b class='flag-5'>技術(shù)</b>分享 | i.MX8M Plus<b class='flag-5'>開發(fā)板</b><b class='flag-5'>交叉</b>編譯<b class='flag-5'>qt</b>5.15.2

    ELF 1技術(shù)|在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的LED功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)基礎(chǔ)上進(jìn)行的。主要目標(biāo)是調(diào)整功能接口引腳配置,以適應(yīng)ELF1開發(fā)板。下面以
    的頭像 發(fā)表于 12-29 10:04 ?1066次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|在NXP源碼基礎(chǔ)上適配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的LED功能

    如何將Go程序編譯到ELF 1開發(fā)板

    編譯并運行在ELF1開發(fā)板上的。一、在GoLand中配置(一)配置SSH連接Ubuntu虛擬機以及ELF1開發(fā)板1、打開GoLand的設(shè)置選
    的頭像 發(fā)表于 01-29 10:42 ?677次閱讀
    如何將Go程序編譯到<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>

    ELF 1技術(shù)|如何移植Boa 到開發(fā)板

    Boa作為Web服務(wù)解決方案顯得尤為適宜。接下來,將跟各位小伙伴詳細(xì)介紹一下基于ELF1開發(fā)板移植Boa的方法。1、Boa官網(wǎng)下載源碼官網(wǎng)網(wǎng)址:Boadownlo
    的頭像 發(fā)表于 02-04 09:30 ?515次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何<b class='flag-5'>移植</b>Boa 到<b class='flag-5'>開發(fā)板</b>上

    ELF 1技術(shù)|如何將Python3.6.9移植開發(fā)板

    如何進(jìn)行交叉編譯并移植ELF1開發(fā)板上。在網(wǎng)址:https://www.python.org/ftp/python/下載Python-3.6.9.tar.xz壓縮
    的頭像 發(fā)表于 02-22 14:06 ?600次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何將Python3.6.9<b class='flag-5'>移植</b>到<b class='flag-5'>開發(fā)板</b>上

    ELF技術(shù)|如何在開發(fā)板上實現(xiàn)對Java的支持

    Java作為一種功能強大且廣泛應(yīng)用的編程語言,具有廣泛的適應(yīng)性和實用性。在ELF1開發(fā)板上集成Java支持,無疑將賦予嵌入式開發(fā)者更廣闊的選擇空間,今天就為各位小伙伴詳細(xì)解析如何在
    的頭像 發(fā)表于 03-13 16:47 ?641次閱讀
    <b class='flag-5'>ELF</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如<b class='flag-5'>何在</b><b class='flag-5'>開發(fā)板</b>上實現(xiàn)對Java的支持

    elfboard配置交叉編譯

    elfboard開發(fā)板上手
    的頭像 發(fā)表于 05-26 11:17 ?422次閱讀

    ElfBoard技術(shù)|在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的按鍵功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)基礎(chǔ)上進(jìn)行的。主要目標(biāo)是調(diào)整功能接口引腳配置,以適應(yīng)ELF1開發(fā)板。接下來
    的頭像 發(fā)表于 07-10 09:54 ?808次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|在NXP源碼基礎(chǔ)上適配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的按鍵功能

    ElfBoard技術(shù)|如何在ELF 1開發(fā)板上搭建流媒體服務(wù)器

    流媒體服務(wù)器是一種專門用于傳輸實時數(shù)據(jù)流的服務(wù)器軟件,廣泛用于視頻直播、視頻會議、音頻播放等應(yīng)用場景。在嵌入式開發(fā)領(lǐng)域,將流媒體服務(wù)器部署到開發(fā)板上可以實現(xiàn)諸如視頻監(jiān)控、實時數(shù)據(jù)傳輸?shù)裙δ?。本文將介紹如何利用nginx和其rtmp流媒體模塊,在
    的頭像 發(fā)表于 08-20 14:48 ?786次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如<b class='flag-5'>何在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>上搭建流媒體服務(wù)器