交叉編譯安裝ARM平台上的Qt


一、宿主機環境搭建:

編譯需要x11庫的支持,在Ubuntu下安裝命令:

sudo apt-get install libx11-dev libxext-dev libxtst-dev

 

二、下載源碼包:qt-everywhere-opensource-src-4.7.0.tar.gz

 

三、解壓源碼包,查看Qt源碼中是否有適合我們編譯平台的配置文件,進入到源碼目錄下的qws目錄下。ls 看一下,有一個適合我們的配置,就是linux-arm-gnueabi-g++ ,如果沒有,就自己建一個目錄,然后從別的目錄下拷貝這兩個文件

qmake.conf 

qplatformdefs.h

進入到linux-arm-gnueabi-g++目錄,看一下qmake.conf 的內容,如下:

QMAKE_CC                = arm-none-linux-gnueabi-gcc

QMAKE_CXX               = arm-none-linux-gnueabi-g++

QMAKE_LINK              = arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

# modifications to linux.conf

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_STRIP             = arm-none-linux-gnueabi-strip

正確,我們就使用這個配置,如果不正確,可以改成自己的編譯器的名字。

 

四、配置:

可以運行./configure --help 查看配置幫助

配置命令:

./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -qt-libtiff -qt-libmng -no-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -qt-mouse-linuxinput -no-neon -qt-libjpeg -qt-libpng

可以將配置編寫進腳本文件。

 

五、執行make –j4

-j參數指定編譯時的線程數,make –j不限制線程數。

 

六、執行make install。

默認安裝路徑為:/usr/local/Trolltech/QtEmbedded-4.7.0-arm

 

七、配置環境變量(vim /etc/profile):

#!/bin/sh

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm

export QMAKEDIR=$QTDIR/qmake

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QMAKEDIR/bin:$QTDIR/bin:/opt/arm-linux-gcc/bin:$PATH

export QMAKESPEC=qws/linux-arm-g++

使環境變量有效的方法:1、注銷,重新登錄。2、source /etc/profile(只在本次終端中有效)

 

測試搭建環境:qmake –v

QMake version 2.01a

Using Qt version 4.7.0 in /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib

出現上述文字則編譯成功。

 

八、交叉編譯。

編寫Hello World程序,保存為hello.cpp。

#include  <QApplication>

#include  <QLabel>

int  main(int  argc,  char  *argv[]) {

        QApplication  app(argc,  argv);

        QLabel  *label   =  new  QLabel("Hello Qt!");

        label->show();

        return  app.exec();

}

執行如下命令:

1、  qmake –project(生成工程文件)

2、  qmake (生成Makefile)

3、  make (編譯工程)

 

九、開發板環境搭建及測試運行

1、在開發板上新建目錄/usr/local/Trolltech/QtEmbedded-4.7.0-arm,再把Ubuntu相同目錄下的lib和plugins文件夾拷貝到該目錄下。

2、將libstdc++.so.6.0.9 和libz.so.1.2.3(這兩個文件在交叉編譯器的lib目錄中) 傳送到開發板的 /usr/local/lib 目錄下。(在這個步驟中,有的資料拷貝librt,具體操作命令如:#cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/libc/lib/librt-2.11.1.so /root/rootfs/lib

     #cd /root/rootfs/lib

     #chmod 777 librt-2.11.1.so

     #ln -s librt-2.11.1.so librt.so.1)

3、設置開發板環境變量:

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib:/usr/local/lib

4、測試運行:第八步中生成的文件下載到開發板中,執行命令:./hello –qws測試程序。

附:開發板環境詳細配置:

export QWS_DISPLAY=:1

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO="LinuxInput:/dev/touchscreen"

export QT_QWS_FONFDIR=$QTDIR/lib/fonts/

export QT_PLUGIN_PATH=$QTDIR/plugins

 

遇到問題總結:

1、  開發板上的程序不能顯示中文漢字,可能是環境變量沒有設置QT_QWS_FONFDIR(猜測,沒有測試)。

2、  在編譯有數據庫的程序時出錯,說沒有發現QsqlDatabase之類的,在生成的*.pro文件中加入QT += sql編譯通過了。之前,還懷疑是在配置編譯Qt時沒有添加sql功能,還在配置中加入了-qt-sql-sqlite語句重新編譯了Qt。。。

 


免責聲明!

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



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