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

发布时间:2024-07-29  

参考:
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”错误。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>