Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145123
  • 博文数量: 32
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 541
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-06 14:39
文章分类

全部博文(32)

文章存档

2011年(1)

2008年(31)

我的朋友

分类:

2008-04-07 09:56:29

如何创建Qt/Embedded开发环境

注意:为了保证您能够正确执行本文的步骤,请务必按照“ 完全安装Redhat 9.0 Step by Step”一文正确安装您的Redhat 9.0系统。

 

 

1. 解压源代码,配置Qt库的路径

2. 使用build脚本编译Qt/Embedded

3. Hello,SBC-2410X for X86

4. Hello,SBC-2410X for ARM

5. 常见的编译错误

 

 

1.    解压源代码,配置Qt库的路径 

   把光盘放入DVD-ROM,执行以下步骤: 

Step1:挂接光盘

#mount /dev/cdrom /mnt/cdrom

 

Step2:进入Qt 开发包目录

#cd /mnt/cdrom/SBC-2410X-Linux/EmGUI


    Step3
:安装X86 版本的Qt Qtopia 源代码

#tar xvzf x86-qtopia.tgz –C /friendly-arm    #该步将在/friendly-arm下生成x86-qtopia目录

    Step4
:安装SBC-2410X 版本的Qtopia 源代码

#tar xvzf arm-qtopia.tgz –C /friendly-arm    #该步将在/friendly-arm目录下生成arm-qtopia目录


    Step5
:弹出光盘

#cd /

#eject 

   
      
为了在PC上模拟运行Qtopia,需要用到对应Qt版本的库文件,因此需要修改/etc/ld.so.conf文件以适应刚刚安装的Qt(Redhat安装时带有Qt库,但不适合我们最新安装的版本),修改后的ld.so.conf文件内容如下:
    /friendly-arm/x86-qtopia/qt/lib
    /friendly-arm/x86-qtopia/qtopia/lib
    /usr/kerberos/lib
    /usr/X11R6/lib
    /usr/lib/sane
    /usr/lib/mysql 

 

 

2.    使用build脚本编译Qt/Embedded 

     (1)编译Qt/Embedded for X86 

      #cd /friendly-arm/x86-qtopia

      #./build (该过程比较长,需要运行大概30分钟左右)
      #ldconfig 
      
注:运行ldconfig是为了使生成的qtqtopia库有效,运行一次即可。
 
    
     (2) 
PC上模拟运行Qtopia 

      #. set-env

#qvfb &  

      #qpe & 

 

 

3.    Hello,SBC-2410X for X86 

     (1)编译Hello, SBC-2410X  
        #cd /friendly-arm/x86-qtopia
        #. set-env 
;注意,中间有个空格,必须要有才能执行有效!   

        #cd hello
        #make 
    
将在/friendly-arm/x86-qtopia/qtopia/bin目录下生成hello可执行文件 
    
     (2)
单独运行
Hello, SBC-2410X  
      #qvfb -width 640 -height 480 &  
      #hello -qws  
      
如图  

qvfb中单独运行Hello, SBC-2410X  
    
      (3)
Qtopia中运行
Hello, SBC-2410X  
           #qvfb -width 640 -height 480 &  
           #qpe  
         
 


 
---------------------------------------------------------------------

 

4. Hello,SBC-2410X for ARM 
      (1)
编译Qt/Embedded for ARM  
         #cd /friendly-arm/arm-qtopia 
         #./build (
该过程比较长,需要运行大概30分钟左右
)  
    
      (2)
编译
Hello, SBC-2410X for ARM  
         #cd hello
         #make 
     
编译完毕,hello将生成存在/friendly-arm/arm-qtopia/qtopia/bin目录下。


      (3)
hello下载到目标板 
       
将可执行文件移动到 SBC-2410X 目前主要有两种方式:
 
 
      
第一种方法:复制到介质(下面以优盘为例
)  
      #mount /dev/sda1 /mnt
      #cp hello /mnt
      #umount /mnt
    
把优盘拔下来插入到 SBC-2410X  USB HOST 端口,按照以下命令操作:
 
      #mount /dev/sda1 /mnt 
;挂接优盘
 
      #cp /mnt/hello /opt/qtopia/bin 
;把 hello 复制到/opt/qtopia/bin目录
     
    
      
第二种方法: 通过网络移动(推荐使用
)  
      
通过网络下载程序的主要步骤是:先把 hello 复制到 ftp 共享目录,然后在 SBC-2410X 上使用 ftp 下载,并修改执行权限运行,如下:
 
    
 PC 端执行:
 
    #cp hello /home/ftp 
;把 hello 复制到 ftp 共享目录

    
SBC-2410X 端执行:
 
    #cd /opt/qtopia/bin 
;进入bin目录

    #ftp 192.168.0.1 
;登录ftp服务器

    >get hello 
;下载
 hello
    >bye 
;退出 ftp 登录
 
    #chmod a+x hello 
;改变 hello 的可执行权限
     
    
      (4)
在目标板上单独运行
hello 
    export set HOME=/root
    export set QTDIR=/opt/qt
    export set QPEDIR=/opt/qtopia
    export set QWS_KEYBOARD="USB:/dev/input/event1"
    export set QWS_MOUSE_PROTO="USB:/dev/input/mouse0"
    export set PATH=$QPEDIR/bin:$PATH
    export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib
    $QPEDIR/bin/hello -qws  
    
      (5)
Qtopia中运行
hello 
      export set HOME=/root
    export set QTDIR=/opt/qt
    export set QPEDIR=/opt/qtopia
    export set QWS_KEYBOARD="USB:/dev/input/event1"
    export set QWS_MOUSE_PROTO="USB:/dev/input/mouse0"
    export set PATH=$QPEDIR/bin:$PATH
    export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib
    $QPEDIR/bin/qpe > /dev/null 2>/dev/null 
    
---------------------------------------------------------------------
5. 常见的编译错误 
  (1) 
执行build时出现的错误 
  ./build 
很长时间后,最后显示如下

Makefiles will be regenerated. 
................................................................................. 
QPE is now configured for building. Just run "make". 
To reconfigure, run make clean and configure. 

make -C libraries/qtopia 
make[1]: Entering directory `/friendly-arm/x86-qtopia/qtopia/src/libraries/qtopia’ 
make[1]: Nothing to be done for `default’. 
make[1]: Leaving directory `/friendly-arm/x86-qtopia/qtopia/src/libraries/qtopia’ 
make -C 3rdparty/libraries/freetype 
make[1]: Entering directory `/friendly-arm/x86-qtopia/qtopia/src/3rdparty/libraries/freetype’ 
make[1]: Nothing to be done for `default’. 
make[1]: Leaving directory `/friendly-arm/x86-qtopia/qtopia/src/3rdparty/libraries/freetype’ 
make -C libraries/qtopia1 
make[1]: Entering directory `/friendly-arm/x86-qtopia/qtopia/src/libraries/qtopia1’ 
g++ -c -I/friendly-arm/x86-qtopia/qtopia/include -I/friendly-arm/x86-qtopia/qt/include -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG -fPIC -DQTOPIA_APP_INTERFACE -I.moc/linux-generic-g++/ -I/friendly-arm/x86-qtopia/qtopia/src/server -o .obj/linux-generic-g++//global1.o global1.cpp 
global1.cpp:39:23: uuid/uuid.h: 
没有那个文件或目录
 
global1.cpp: In static member function `static QUuid Global::generateUuid()’: 
global1.cpp:188: `::uuid_generate’ undeclared (first use here) 
make[1]: *** [.obj/linux-generic-g++//global1.o] Error 1 
make[1]: Leaving directory `/friendly-arm/x86-qtopia/qtopia/src/libraries/qtopia1’ 
make: *** [libraries/qtopia1] Error 2  
  
这是因为你没有正确安装Redhat 9.0所致,请参考 “ 完全安装Redhat 9.0 Step by Step”一文正确安装您的Redhat 9.0系统
 
    
  (2) 
编译hello时出现的错误
 
  
信息如下:
 
  /usr/lib/qt-3.1/bin/uic hello_base.ui -o ./hello_base.h
g++ -c -I/include -I/usr/lib/qt-3.1/include -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG -DQTOPIA_APP_INTERFACE -I.moc/linux-generic-g++/ -o .obj/linux-generic-g++//hello.o hello.cpp
g++ -c -I/include -I/usr/lib/qt-3.1/include -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG -DQTOPIA_APP_INTERFACE -I.moc/linux-generic-g++/ -o .obj/linux-generic-g++//main.o main.cpp
main.cpp:2:35: qtopia/qpeapplication.h: No such file or directory
main.cpp: In function `int main(int, char**)’:
main.cpp:6: `QPEApplication’ undeclared (first use this function)
main.cpp:6: (Each undeclared identifier is reported only once for each function
it appears in.)
main.cpp:6: parse error before `(’ token
main.cpp:9: `a’ undeclared (first use this function)
main.cpp:5: warning: unused parameter `int argc’
main.cpp:5: warning: unused parameter `char**argv’
make: *** [.obj/linux-generic-g++//main.o] Error 1 
   
从错误信息中可以看出,编译hello的时候这里用的是-I/include头文件目录,这个目录是不正确的,导致这样的原因是:您没有在build完之后运行ldconfig命令

    
  (3) 
编译hello时出现的第二种错误
 
  
错误信息如下:
 
  [root@localhost hello]# make 
/usr/lib/qt-3.1/bin/uic hello_base.ui -o ./hello_base.h 
/usr/lib/qt-3.1/bin/uic: error while loading shared libraries: libqt-mt.so.3: cannot open shared object file: No such file or directory 
make: *** [hello_base.h] Error 127  
   
从错误信息中可见,您的x86-qtopia环境并没有搭建好,亦然使用redhat9.0自带的环境。解决办法如下:
 
   
第一种办法:请务必在同一个窗口执行以上步骤。运行build脚本时,已经包含了环境的创建,您不能离开build运行后所在的窗口环境来编译
hello 
  
第二种办法:自己创建重新创建环境。即使用/friendly-arm/x86-qtopia/set-env脚本。运行时请务必使用“. set-env ”,注意中间有个空格
 
   
同样,您不能离开set-env运行后所在的窗口环境来编译hello 

阅读(1522) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~