嵌入式V3s交叉編譯 tslib和QT4.8.7,並使用Qt Creator編譯項目


  本文主參考:http://zero.lichee.pro/%E5%BA%94%E7%94%A8/QT_index.html

  環境 Ubuntu16 64位

  arm-linux-gnueabihf version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)

 

  (根據參考鏈接編譯嵌入式版本Qt4.8.7時遇到諸多問題,特此記錄)

  1.交叉編譯並安裝

sudo apt-get install libtool automake autogen autoconf libsysfs-dev
git clone https://github.com/kergoth/tslib.git
cd tslib
echo  "ac_cv_func_malloc_0_nonnull=yes"  > tmp.cache
./autogen.sh
./configure --host=arm-linux-gnueabihf --cache-file=tmp.cache   --prefix=/opt/tslib CC=arm-linux-gnueabihf-gcc
make
sudo make install

  完成后會在Ubuntu系統/opt目錄下出現tslib文件夾,將此文件夾拷貝置嵌入式系統相同目錄下,配置嵌入式系統環境變量 vi /etc/profile,根據自己系統添加如下內容:

#export TSLIB_ROOT=/opt/tslib
#export TSLIB_TSDEVICE=/dev/input/event1
#export TSLIB_CALIBFILE=/etc/pointercal
#export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
#export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
#export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_CONSOLEDEVICE=none
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

  /dev/fb0對應顯示設備。添加保存后 source /etc/profile 使能環境變量,運行/opt/tslib/bin/ts_test 測試是否成功。/opt/tslib/bin/ts_calibrate為觸摸校准程序。

2.交叉編譯QT4.8.7

  下載 qt-everywhere-opensource-src-4.8.7.tar.gz 並解壓,進入文件夾內修改文件 vim mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf,修改后內容如下:

#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts

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

load(qt_config)

QMAKE_INCDIR += /opt/tslib/include /opt/sqlite3/include
QMAKE_LIBDIR += /opt/tslib/lib /opt/sqlite3/lib
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98

 

修改完成后執行如下命令配置Qt編譯環境:

./configure -verbose -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -depths 4,8,16,32 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian  -host-little-endian -no-opengl -no-openssl -nomake examples -make docs -qt-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib -prefix /opt/qt-4.8.7-arm

 等待配置完成后,執行:

make -j8
make install

make和install都順利的話會出現/opt/qt-4.8.7-arm。同樣將其拷貝置嵌入式系統的相同目錄下並配置環境變量vi /etc/profile,根據自己系統添加如下內容:

export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/tslib/lib:/opt/qt-4.8.7-arm/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/opt/tslib/bin
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt-4.8.7-arm/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/qt-4.8.7-arm/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
export QWS_MOUSE_PROTO=Tslib:/dev/input/event1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opti/tslib/lib:/opt/qt-4.8.7-arm/lib:/usr/lib/arm-linux-gnueabihf/lib

(以上環境變量包含上文中已經配置過的tslib環境變量)

3.使用Qt Creator編譯項目並在嵌入式設備中運行

  自行安裝Qt Creator,新建項目:

  

 

 編譯后將生成文件拷貝置嵌入式系統中, /root/qt_test -qws 運行(記住需要加 -qws)。

如果運行出錯:

QLock::QLock: Cannot create semaphore /tmp/qtembedded-0/QtEmbedded-0 'd' (38, Function not implemented)
Cannot get display lock

請重新編譯內核,在配置中勾選General setup ---> System V IPC

  然后運行即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM