国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

嵌入式linux新手入門手記-準備qt5.4.1開發平臺

發布時間:2016-3-4 11:08    發布者:designapp
關鍵詞: 嵌入式linux , am335x
這個手記寫到這里,am335x的軟件平臺已經能夠正常工作了, tslib也已經能夠進行正確的觸摸屏校正,自己編寫一個hello world的程序,并交叉編譯后,能夠在am335x上運行,并在超級終端上打印出“hello world”。

那么,我們正式開始搭建qt的開發平臺,我的ubuntu上安裝的是qt5.4.1,并已經寫了一個hello world的qt程序,這個程序非常簡單,就是運行后在桌面上顯示一個窗口,窗口中顯示一行文字“hello world”,以及一個按鍵。鼠標點擊按鍵退出程序。

ubuntu的qt安裝在/home/XXXX/qt5.4.1目錄下,QtCreator也安裝在相同目錄下,上述的qtdemo程序用QtCreator創建并編譯通過。

為保證和ubuntu平臺的一致性,決定am335x的平臺移植qt5.4.1,首先到qt的官網下載源代碼:http://download.qt.io/official_releases/qt/5.4/5.4.1/single/qt-everywhere-opensource-src-5.4.1.tar.gz。下載可以使用git,也可以用瀏覽器直接打開這個連接。將下載到的壓縮文件解壓縮到./source目錄下,進入到./source目錄下執行configure工具生成編譯選項,這里要進行三步工作:

A、設置交叉編譯的環境變量。這里需要注意一點,我們在交叉編譯qt5.4.1的工具包時,涉及到2種不同的編譯:第一種是使用ubuntu安裝的GCC和G++編譯qmake工具,這些qmake工具將運行在ubuntu下,用于將后續自己編寫的qt應用程序的源代碼編譯成能夠運行在arm平臺上的目標可執行程序;第二種是使用arm-linux-gnueabihf編譯器,將qt5.4.1的庫編譯成運行于arm平臺的靜態庫或者共享庫。

export QT_INSTALL_DIR=/home/XXXX/Qt541arm #設定編譯好的qt包的安裝路徑
export ARCH=arm #設定目標cpu架構
export LIBRARY_PATH=$LIBRARY_PATH:/usr/lib/i386-linux-gnu #為后續的編譯設定庫路徑

B、編輯./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf。mkspecs目錄下有很多的保存.conf文件的目錄,分別對應不同的操作系統和交叉編譯平臺,我這里使用linux-arm-gnueabi-g++平臺的配置文件進行交叉編譯。

MAKEFILE_GENERATOR = UNIX
CONFIG += incremental gdb_dwarf_index
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QT_QPA_DEFAULT_PLATFORM=linuxfb
COMPILER_FLAGS += -o3 -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard
QMAKE_CFLAGS_RELEASE += -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard
QMAKE_CXXFLAGS_RELEASE += -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard
QT_INSTALL_DIR = /home/XXXX/Qt541arm
QMAKE_INCDIR += /usr/tslib/include
QMAKE_LIBDIR += /usr/tslib/lib
LIBS += -ldl -fPIC -lts
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++
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
load(qt_config)

一定要正確設置QMAKE_INCDIR和QMAKE_LIBDIR,指向正確的編譯后tslib安裝目錄下的include和lib目錄。否則交叉編譯qt5.4.1時會出現找不到頭文件的錯誤。

LIBS的幾個設置比較重要,-lts是在后續的交叉編譯應用時增加tslib庫。-fPIC用于在編譯時生產位置無關代碼,-ldl設置用顯示方法調用相關的函數調用。

這里額外提一句,交叉編譯器中有一個工具arm-linux-gnueabihf-readelf,非常實用,利用這個工具能夠查看應用程序的可執行文件的各種信息,例如使用arm-linux-gnueabihf-readelf -d qtdemo,可以查看qtdemo中包含并使用哪一些共享庫。

C、執行./configure進行配置:

我編輯了一個sh文件,用于進行配置,這樣方便后續使用:

#!/bin/sh
./configure -v \
-release \
-opensource \
-confirm-license \
-make libs \
-optimized-qmake \
-platform linux-g++ \
-xplatform linux-arm-gnueabi-g++ \
-prefix /home/XXXX/Qt541arm \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-qt-sql-sqlite \
-tslib \
-qreal float \
-linuxfb \
-no-evdev \
-no-egl \
-no-eglfs \
-no-opengl \
-no-directfb \
-no-sql-db2 \
-no-sql-ibase \
-no-sql-mysql \
-no-sql-oci \
-no-sql-odbc \
-no-sql-psql \
-no-sql-sqlite2 \
-no-sql-tds \
-no-xcb \
-no-xcb-xlib \
-no-icu \
-no-c++11 \
-no-cups \
-no-iconv \
-no-android-style-assets \
-nomake examples \
-nomake tests \

這里重點地方是:

1、用-platform指定交叉編譯的平臺,這個是錯誤的,這個選項是指定編譯qmake工具的平臺,由于我的qmake是需要運行在ubuntu上,所以這個選項指定的qmake.conf中必須將編譯工具指向ubuntu的GCC和G++;

而-xplatform才是指定共享庫等,以及最終的qt應用程序的運行平臺的。-xplatform告訴configure使用哪一個交叉編譯工具編譯qt5.4.1開發包的lib。這個選項指定的qmake.conf中必須將編譯工具指向arm的交叉編譯工具,并設定相關的編譯選項。

2、第一次編譯好arm的qt5.4.1開發包,并將這個qt5.4.1開發包中的lib和plugins目錄下的內容全部拷貝到arm目標平臺的nfs文件系統中的/opt/qt541arm目錄中。用這個包的qmake編譯我的qtdemo程序,然后將可執行文件拷貝到arm板的nfs文件系統中。正確設定運行環境后,運行qtdemo出錯,提示could not
find or load a platform。不能打開顯示平臺,這個錯誤我大約花了2天時間,后來發現關鍵在上面的configure時,如果使用了-linuxfb,則必須-no-egl,-no-eglfs,-no-directfb,-no-opengl將其他的顯示平臺關閉,要不然后續編譯qtdemo并運行時,就會出現不能找到或者裝載顯示平臺,有效地顯示平臺是:......的錯誤。

當然,運行qt應用程序之前,需要保證你的qt的運行環境變量設置是正確的。使用上述的configure成功配置好編譯環境后,最后應該顯示出qt5.4.1開發包的包含項,以及編譯后的安裝位置等:

Building on: linux-g++ (i386, CPU features: none detected)
Building for: linux-arm-gnueabi-g++ (arm, CPU features: none detected)
qmake vars .......... styles += mac fusion
windows DEFINES += QT_NO_MTDEV DEFINES += QT_NO_EVDEV sql-drivers = sqlite sql-plugins = qmake switches .........
Build options:
Configuration .......... accessibility alsa audio-backend clock-gettime
clock-monotonic compile_examples concurrent cross_compile dbus eventfd freetype
full-config getaddrinfo getifaddrs harfbuzz inotify ipv6ifname large-config
largefile libudev linuxfb medium-config minimal-config mremap nis no-pkg-config openssl pcre png
posix_fallocate precompile_header qpa qpa reduce_exports release rpath shared
small-config tslib zlib
Build parts ............ libs
Mode ................... release
Using C++11 ............ no
Using gold linker....... no
Using PCH .............. yes
Target compiler supports:
Neon ................. no
Qt modules and options:
Qt D-Bus ............... yes (loading dbus-1 at runtime)
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
Large File ............. yes
QML debugging .......... yes
Use system proxies ..... no
Support enabled for:
Accessibility .......... yes
ALSA ................... yes
CUPS ................... no
Evdev .................. no
FontConfig ............. no
FreeType ............... yes (bundled copy)
Glib ................... no
GTK theme .............. no
HarfBuzz ............... yes (bundled copy)
Iconv .................. no
ICU .................... no
Image formats:
GIF .................. yes (plugin, using bundled copy)
JPEG ................. yes (plugin, using bundled copy)
PNG .................. yes (in QtGui, using bundled copy)
journald ............... no
mtdev .................. no
Networking:
getaddrinfo .......... yes
getifaddrs ........... yes
IPv6 ifname .......... yes
OpenSSL .............. yes (loading libraries at run-time)
NIS .................... yes
OpenGL / OpenVG:
EGL .................. no
OpenGL ............... no
OpenVG ............... no
PCRE ................... yes (bundled copy)
pkg-config ............. no
PulseAudio ............. no
QPA backends:
DirectFB ............. no
EGLFS ................ no
KMS .................. no
LinuxFB .............. yes
XCB .................. no
Session management ..... yes
SQL drivers:
DB2 .................. no
InterBase ............ no
MySQL ................ no
OCI .................. no
ODBC ................. no
PostgreSQL ........... no
SQLite 2 ............. no
SQLite ............... qt-qt
TDS .................. no
udev ................... yes
xkbcommon .............. no
zlib ................... yes (bundled copy)
Info: creating super cache file /home/XXX/temp/source/.qmake.super
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /home/XXXX/Qt541arm
Prior to reconfiguration, make sure you remove any leftovers from the previous build.

上述準確無誤后,執行make -j4編譯qt5.4.1開發包,這里的-j4是通知編譯器使用4線程編譯,這個數字根據當前運行平臺的CPU核心數來設置。使用多線程編譯能夠極大提高編譯速度。我的i3-2350計算機,編譯一次qt5.4.1開發包的時間大約是40分鐘左右(不過這個也和需要編譯的qt5.4.1的包含項的多少有關)。

編譯成功后,執行make install將qt5.4.1開發包安裝到configure時-prefix指定的目錄中。然后將安裝目錄中的lib和plugins目錄拷貝到arm的nfs文件系統中的/opt/qt541arm目錄下(當然,這個目錄的設置看個人的興趣愛好:) )。
本文地址:http://m.qingdxww.cn/thread-161734-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • dsPIC® DSC:攻克各種觸摸傳感挑戰的電容式觸摸解決方案
  • PIC32CM LS60 Curiosity Pro評估工具包
  • dsPIC® DSC集成電機驅動器:非常適合在緊湊空間內進行實時控制
  • PIC32CK SG單片機——輕松滿足新型網絡安全要求
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲毛片在线| 亚洲好看站| 欧美成人aaaa免费高清| 欧美日韩精品一区三区| 亚洲国产精品久久综合| 欧美日韩福利视频| 日韩亚洲精品不卡在线| 日本三级香港三级人妇三级| 亚洲青草| 欧美一级免费大片| 天堂av2014| 色综合久久久久久久| 亚洲精品有码在线观看| 人人搞人人| 亚洲国产九九精品一区二区| 色综合天天综合网国产国产人| 日本免费一二区| 人人爱干| 亚洲乱亚洲乱妇24p| 亚洲视频三级| 日韩r级在线观看| 欧美精品1区2区| 亚洲欧美日韩中文在线| 日本三级黄在线观看| 亚洲国产高清在线精品一区| 日韩精品视频在线观看免费| 性人久久久久| 亚洲国产2017男人a天堂| 亚色官网| 人人搞人人搞| 天天爱天天做色综合| 亚洲色图色| 日韩成人精品| 人人爱天天做夜夜爽| 欧美特级特黄a大片免费| 亚洲国产精品嫩草影院| 日韩免费视频网站| 日韩一区二区三区中文字幕| 午夜91| 亚洲日产欧| 一级毛片儿|