您的位置:首页 > 编程语言 > Qt开发

ubuntu 9.1 下搭建Qt Creator的ARM开发环境(1)

2010-08-07 07:41 465 查看
参考:
http://www.arm9home.net/read.php?tid-5161.html
http://www.arm9home.net/read.php?tid-5182.html

http://blog.sina.com.cn/s/blog_6541e78f0100ihoy.html?retcode=0

http://blog.sina.com.cn/s/blog_6541e78f0100ihp3.html?retcode=0

http://hi.baidu.com/jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html

http://hi.baidu.com/清水小流/blog/item/9b9ac64bb8b4aaf383025ce0.html

http://blog.ednchina.com/gurongjiang/352778/Message.aspx

 

(一)编译QT前,安装相应的库文件

sudo apt-get install libx11-dev
sudo apt-get install libgtkglextmm-x11-dev
sudo apt-get install libghc6-x11-dev
sudo apt-get install libgl1-mesa-swx11-dev
sudo apt-get install xorg-dev

(二)下载准备
QT版本下载地址:http://qt.nokia.com/downloads-cn

(1)qt-creator-linux-x86-opensource-1.3.1.bin
    http://qt.nokia.com/downloads/qt-creator-binary-for-linux-x11-32-bit
(2)qt-everywhere-opensource-src-4.6.2.tar.gz
    http://qt.nokia.com/downloads/embedded-linux-cpp
(3)arm-linux-gcc-4.1.2
    http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz

把下载的文件放在/opt/FriendlyARM/mini2440, 然后执行
sudo tar xvzf qt-everywhere-opensource-src-4.6.3.tar.gz
并把解压所得的文件复制为三份, 分别命名为qt-x86-4.6.3,  qt-x86e-4.6.3, qt-arm-4.6.3,, 分别对应PC, 嵌入式x86, 嵌入式arm平台.

 

 

(三)开始编译

(1) 编译 PC 版:
cd /opt/FriendlyARM/mini2440/qt-x86-4.6.3
#./configure
# make
# make install
此过程耗时较长

pc平台的还需要一个qvfb模拟器, 编译过程如下:

cd /opt/FriendlyARM/mini2440/qt-x86-4.6.3/tools/qvfb/
#make
编译完毕,将qt-x86-4.6.3/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.6.2/bin目录。
并把这个bin目录添加path: sudu gedit /root/.bashrc

 

(2) 编译嵌入式x86版:
cd /opt/FriendlyARM/mini2440/qt-x86e-4.6.3
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
# make
# make install
此过程耗时较长

(3)编译嵌入式arm版(需要 arm-linux-gcc ,而不是以上两个用的gcc 4.4.1):
和上面的编译过程稍有不同,一是需要安装arm-linux-gcc 4.1.2, 二是需要安装tslib。

 

(3-a)安装arm-linux-gcc 4.1.2
据说使用友善自带的ARM-Linux GCC 4.3.2编译的程序移植到开发板上后,出现Segmentation Fault错误,so~ 改用ARM-Linux GCC 4.1.2。
直接将arm920t-eabi.tgz放在根目录解压:sudo tar xvzf arm920t-eabi.tgz
把编译器路径加入系统环境变量,运行命令:gedit /root/.bashrc
编辑/root/.bashrc文件,在最后一行加上 export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

 

(3-b)安装tslib

这里还有一段插曲, 首先tslib1.4.tar.gz这个玩意不好找, 后来在csdn上下花四个大分下载了一个包, 第二, 里面的autogen.sh脚本, 需要"autotools", 即autoconf, automake, libtool, 安装这三个玩意耗费了我将近两个钟头,,,

编译tslib对触摸屏支持:
下载
tslib1.4.tar.gz,仍然放在/opt/FriendlyARM/mini2440/, 解压后进入目录,如果该目录下没有configure文件,先执行autogen.sh脚本生成。
# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
# make
# make install

设置环境变量,以便编译时找到相关的库:
# export CPLUS_INCLUDE_PATH=/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++:/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++/arm-none-linux-gnueabi
# export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

 

修改qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):
QMAKE_CC                = arm-linux-gcc -lts
QMAKE_CXX               = arm-linux-g++ -lts
QMAKE_LINK              = arm-linux-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-g++ -lts

 

上面绿色的两步,似乎可以省略。

 

(3-c) 执行configure, 生成Makefile文件, 参数较长,,,,,可以根据自己需要裁减Qt:
./configure /
-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm /
-opensource /
-confirm-license /
-release -shared /
-embedded arm /
-xplatform qws/linux-arm-g++ /
-depths 16,18,24 /
-fast /
-optimized-qmake /
-pch /
-qt-sql-sqlite /
-qt-libjpeg /
-qt-zlib /
-qt-libpng /
-qt-freetype /
-little-endian -host-little-endian /
-no-qt3support /
-no-libtiff -no-libmng /
-no-opengl /
-no-mmx -no-sse -no-sse2 /
-no-3dnow /
-no-openssl /
-no-webkit /
-no-qvfb /
-no-phonon /
-no-nis /
-no-opengl /
-no-cups /
-no-glib /
-no-xcursor -no-xfixes -no-xrandr -no-xrender /
-no-separate-debug-info /
-nomake examples -nomake tools -nomake docs /
-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

 

注意:红色的是触摸屏支持的配置。
-I/opt/tslib-install /include    编译好的头文件路径
-L/opt/tslib-install /lib     编译好的库文件路径
前几步中编译tslib个过程中, 生成了上面的目录和文件.
 

ps:  关于配置参数,参照http://www.cuteqt.com/blog/?p=582,或者用configure -embedded –help查看。

 

 

 
 

然后make, make install,,,,,,,,,,,,,,,,,

安装完成后,在 /usr/local/Trolltech 目录中有三个文件夹:Qt-4.6.2、QtEmbedded-4.6.2、QtEmbedded-4.6.2-arm。

 

 

(四)移植 ,,,这一步还没有做,基本是照抄过来的

 通过NFS启动的mini2440,具体操作可以参照friendlyarm2010版的手册第5.5.3。

将Ubuntu9.10的  /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib 中的所有文件复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib目录中,这个库的大小是可以剪裁的,

将Ubuntu9.10上  /usr/local/tslib 中的库复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local中。即将/usr/local/tslib下的所有文件复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local文件夹下.

 

 

 

 

如果运行时还缺少其他的库,复制方法相同。也可以使用arm-angstrom-linux-gnueabi-readelf -a 程序名 | grep "Share",命令查看需要哪些共享库,一起复制过去。

为支持触摸屏,开机自动设置环境变量,在2440的 /etc/profile中追加:
export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH                                                  
export TSLIB_ROOT=/usr/local/lib    
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

取消/usr/local/etc/ts.conf中的第一个注释:
# module_raw input (去掉#,并且该行顶格)
我编辑时没有“#”

启动Micro2440运行 /usr/local/bin/ts_calibrate 校正触摸屏。

到此Qt4.6.2的移植暂告一段落,移植还没有完,此时如果在开发板上运行Qt4.6.2-arm编译的程序,则会出现“relocation error: /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”错误。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息