應導師的要求,最近需要做一個嵌入式linux的網絡通信應用,萬事開頭難,搭建環境就花了我好幾天。總結下經驗,避免走彎路。
首先需要下載三個程序包:
1.qt-x11-opensource-src-4.5.0 x11主要是用來安裝qvfb等工具的
2.qt--embedded-linux-opensource-src-4.5.0 嵌入式的qt,需要分別編譯出X86和arm兩個版本
3.qt-creator 開發工具,很好用
在安裝這三個軟件前,交叉編譯的gcc得先安裝好,本人安裝的是arm-linux-gcc4.3.3這裏就不細說了。
qt-x11安裝:
1.解壓:tar -xvzf qt-x11-opensource-src-4.5.0.tar.gz.
2../configure -prefix 安裝路徑
3.make
4.sudo make install
安裝完成後需要單獨編譯qvfb!!!!
qvfb:是嵌入式開發必不可少的工具,qvfb可以讓我們在PC上仿真開發板的運行結果。
1.進入qt-x11的源碼裏 /tools/qvfb/文件夾
2.make
3.將生成的qvfb可執行文件複製到之後編譯的x86版本的嵌入式QT 的bin文件夾下
qt-embedded安裝:
a.編譯X86的qt
1.解壓
2. ./configure -prefix /opt/EmbedSky/qt-4.5/__install/x86/ -release -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -qvfb -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
-nomake demos -nomake examples
3.make
4.sudo make install
5.設置環境變量!
$sudo gedit /etc/profile 打開profile文件
在最後一行加入:
export QTDIR=/opt/EmbedSky/qt-4.5/__install/x86
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin
$source /etc/profile 使立即文件生效 或者重新啓動系統也可以
b.編譯arm的qt
1.make confclean
2.configure -prefix /opt/EmbedSky/qt-4.5/__install/arm/ -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-kbd-qvfb -no-glib -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -I/tslib-1.4/inclued -L/tslib-1.4/lib
3.make
4.sudo make install
安裝完畢,helloworld步驟如下:
1.打開qtcreator,在tools中添加qt版本如圖:
要想編譯能在本地運行的qt程序就選擇x86 的qmake
2.新建一個helloworld工程
3.在project中設置工程的build configuration,如圖:
4.bulid工程
5.如果直接運行工程的話會提示錯誤:
QWSSocket::connectToLocalFile could not connect:: No such file or directory
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the "-qws" command-line option.
解決方法是:在終端中
$qvfb &(&表示後臺運行)
$cd 工程目錄
$./helloworld -qws
這裏qws使得程序以窗口服務器的方式啓動。窗口服務器對幀緩衝設備進行獨佔式管理,其他qt程序通過與窗口服務器進行通信的方式間接地使用這些設備。
因此,第一個qt程序必須以qws方式啓動,之後的就不用了也不能了,因爲已經被獨佔了。
一些問題:
1.終端輸入qvfb時出現:Cannot open keyboard pipe /tmp/.qtvfb_keyboard-0 ,只要到該文件夾下找到該文件並更改該文件的權限就行:chmod a+rwx XXX
2.編譯x11的時候在./configure可能會出現:
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/zhu/Qt/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++
這個問題的解決方法就是安裝缺少的三個軟件包:libX11-dev libXext-dev libXtst-dev
Ubuntu下使用如下命令:sudo apt-get install libX11-dev libXext-dev libXtst-dev
Fedora下使用如下命令:yum install libX11-devel libXext-devel libXtst-devel
3.Ubuntu終端中輸入gmake提示找不到該命令:
gmake其實和make是同一個命令,執行下面命令將gmake和make這兩個命令軟鏈接起來:
cd /usr/bin
sudo ln -s make gmake