天天看點

QT4.8.5在linux下搭建嵌入式開發環境

主機環境:Ubuntu14.04 LTS

編譯器:arm-linux-gcc 4.3.3

開發闆:TQ2440,Linux-2.6.30.4

 一 編譯tslib庫:

把tslib-1.4.tar.gz放到一個目錄下,比如/opt目錄下。接着執行指令如下:

       #tar zxvf tslib-1.4.tar.gz 

執行指令cd tslib,進入tslib目前目錄,接着執行指令如下:

       #./autogen.sh 

然後接着執行配置指令:

       #./configure     --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 

最後執行編譯指令和安裝指令如下:

      1.        make  

      2.        make install 

如果以上步驟沒錯,則可以在/usr/local/tslib下出現我們需要的庫檔案,這些庫檔案我們移植時會用到。

編譯期間出現的錯誤:./autogen.sh: 4: autoreconf: not found

解決辦法:sudo apt-get install autoconf automake libtool

二 編譯QT4.8.5源碼

1:解壓qt-everywhere-opensource-src-4.8.5.tar.gz:

       #tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz

2:建立目錄:mkdir /opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm

3:進入qt-everywhere-opensource-src-4.8.5目錄,輸入如下指令

注意:先通過 --prefix 指定qt安裝的路徑,-I後面指定上一步tslib的include路徑,-L後面指定上一步tslib的lib路徑

sudo ./configure --prefix=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license

# make

# make install

在編譯的時候出現如下錯誤:

       The tslib functionality test failed!

       You might need to modify the include and library search paths by editing

        QMAKE_INCDIR and QMAKE_LIBDIR in

          /home/hero/work/qtarm-build/mkspecs/qws/linux-arm-g++.

解決辦法:把ARM-LINUX-GCC的路徑設定正确 如下設定

修改源碼路徑:qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++/qmake.conf 

#

# qmake configuration for building with arm-linux-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                =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-gcc

QMAKE_CXX               =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-g++

QMAKE_LINK              =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-g++

# modifications to linux.conf

QMAKE_AR                =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-objcopy

QMAKE_STRIP             =/usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-strip

QMAKE_INCDIR=/usr/local/tslib/include/

QMAKE_LIBDIR=/usr/local/tslib/lib/

QMAKE_CFLAGS           += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4 -mtune=arm920t

QMAKE_CXXFLAGS         += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4 -mtune=arm920t

load(qt_config)

三 設定環境變量

1 輸入指令:gedit /etc/profile 在最末尾添加如下,注意目錄一定相同/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm

export QPEDIR=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm

export QTOPIA_DEPOT_PATH=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm/bin

export QTDIR=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm

export DQTDIR=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm

export QMAKE=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm/bin/qmake

export UIC=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm/bin/uic

export TMAKEDIR=/opt/EmbedSky/qt-4.8.5/qt-4.8.5_arm/bin

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH

2 跟新環境變量指令:source /etc/profile 

繼續閱讀