Qt 黑白棋分别在linux 字符界面和arm机下运行

来源:互联网 发布:c语言default 编辑:程序博客网 时间:2024/05/17 07:15

 API常用版本:
QtopiaCore --X86 、Qt-X11、 Qt-windows
linux文字界面下用QtopiaCore—X86
linux图形界面下Qt-X11
windows下用Qt-windows

后两者直接安装就能用了,没什么可说的

   

现在试试QtopiaCore--X86(可缺省)在linux 字符界面下运行Qt程序

 

编译

# ./configure -embedded x86 -qvfb -no-openssl

# make

# make install

 

之后先设置好环境变量:默认安装路径 /usr/local/Trolltech/QtopiaCore-4.3.5
# vi .bash_profile
在原有的PATH 之前加上新增进的Qtopiacore的环境变量,这样系统在原有的QtX11之前先找到Qtopiacore的环境变量
,所以就运行了Qtopiacore的命令,而不会运行下面的QtX11命令
注意事项:退出vi 时若以 “:X”方式退出,将会导致source .bash_profile 出错

QtopiaCore运行命令:
# qmake -project
# qmake
# make
# ./gameboard  -qws
其中 qws 代表程序以服务器的形式运行;

但是现在机器不是服务器,怎么办呢?
解决:

先运行一个终端模拟器,键入命令
# qvfb
即可,qvfb 可执行程序 可在 QtX11/opensource 下找到,可把qvfb 拷到 /usr/bin 下,这样就可执行 qvfb 命令了

  

或是把现在系统运行的图形界面改成字符界面,操作如下:
# vi /etc/inittab
把第18行 的 “id:5:initdefault:”缺省值由“5” 改成 “3”,即把默认的系统图形界面改成字符界面
# vi /boot/grub/grub.conf
把15行改成 kernel /vmlinz-2.4.20-8 ro root=LABEL=/ vga=0x314 ,即设置屏幕分辨率

重启系统,即可进到字符界面
运行命令
# ./gameboard -qws
即可。


Qt移植到arm 板上:

 

用 QtopiaCore-4.3.5-arm ,它一般可用以下两种方法实现

 

编译

# ./configure -embedded arm

# make

# make install

 

方法1:
首先设置好环境变量,默认安装路径 /usr/local/Trolltech/QtopiaCore-4.3.5-arm:
# vi .bash_profile
1.在原有的PATH 之前加上新增进的Qtopiacore-arm/bin的环境变量
2.进到要移植到 arm 板上的源代码的文件夹,键入命令
# qmake -project
# qmake
# make
# file gameboard     //查看文件是否是用QtopiaCore-4.3.5-arm 编出来的
3.把编译好的可执行文件传到arm 板上,运行,这时 arm 上提示缺少什么库文件,就加进相应的库文件,直到成功。
这时要注意:

     a . 有些库文件可能是链接文件,我们这时只需要把链接指向的最终文件传到arm上,在 arm 终端下键入命令
     # ln  -s <链接文件指向的最终文件名> <链接文件名> 
     即可建立一个软链接。
     b . 一定要新增环境变量,执行命令
     # export LD_LIBRARY_PATH=/mnt/yaffs

     c .arm 板上除了yaffs目录,其它目录是不可写的,但确实要往/usr/lib 或其它一些目录添进东西,这时可通过命令挂  虚拟的内容

     # mount  -t  ramfs ramfs /usr/lib

方法2:

此方法是常用的移植方法
1. 取得一个 准备往 arm 板上烧写的 根文件系统 root.cramfs
2. 下载一个cramfs.tar.gz 的mkcramfs 和 cramfsck 命令的压缩包,解压,make,把其中的mkcramfs 和 cramfsck可执行程序
    拷到/usr/bin 下
3. 查看镜像文件,键入命令
   # cramfsck -x <目标文件>  <源镜像文件>  如 # cramfsck -x rootfs rootfs.cramfs
4. # cd rootfs  进到目标文件
5. 打开另一终端,在原有的PATH 之前加上新增进的Qtopiacore-arm的环境变量,进到要移植的源代码的文件夹,键入命令
   # qmake -project
   # qmake
   # make
   即用Qtopiacore-arm生成一个(我的是叫)gameboard 的可执行程序
6. 键入命令查看生成的gameboard 的可执行程序是否是用来运行在 arm 板上的
   # file gameboard
7. 把生成的gameboard拷到 rootfs  的目标文件下的 home 目录下
8. 运行命令,查看在 arm 板运行gameboard 可执行程序 需要什么库支持
   # arm-linux-readelf -a gameboard | grep Shared
9. 把步骤8查到的所需的库文件加到rootfs  的目标文件下的 lib 目录下
10. 运行命令,把 rootfs  的目标文件做成rootfs.cramfs的根文件系统的镜像文件

   # mkcramfs  rootfs  rootfs.cramfs
11. 把rootfs.cramfs的根文件系统的镜像文件重新烧写到 arm 板上
12. 运行

      # ./gameboard  -qws

      其中qws 表示以图形窗口服务器的形式运行

     注意:默认的帧缓冲(framebuffer)是/dev/fb0,若没有的话,自己到/dev下用命令建立一个软连接,如下

      # cd /dev

      # ln -s fb/0 fb0

 

附:具体烧写根文件系统的方法可参考《交叉编译环境的建立》

http://blog.csdn.net/xiaozhi_su/archive/2009/03/21/4011311.aspx

原创粉丝点击