转自:http://zhanzhiwei2009.blog.163.com/blog/static/126127332200992283533727/
Qtopia-core-4.3.4在mini2440上的交叉编译移植(成功)
主机:虚拟机装有Fedora11操作系统,arm-linux-gcc是3.4.1
目标机:友善mini2440开发板,supervivi ,kernel2.6.13自带,7寸触摸屏
qtopia版本:qtopia-core-opensource-src-4.3.4.tar.gz
# tar zxvf qtopia-core-opensource-src-4.3.4.tar.gz
#mv qtopia-core-opensource-src-4.3.4 qtcoresrc434
#cd qtcoresrc434
#./configure -v -little-endian -embedded arm -prefix /mnt/nfs/qtcore434
# make
# make install
然后通过nfs挂载到开发板上运行,现在/mnt/nfs/下边一个设定环境变量的文件qtopia434.sh,内容如下:
//qtopia434.sh
#!/bin/sh
export QTDIR=/mnt/nfs/qtcore434
export QPEDIR=/mnt/nfs/qtcore434
export KDEDIR=/mnt/nfs/qtcore434
export QWS_SIZE=480x290
fi
clear
挂载(见我的相关文章nfs挂载问题)
启动开发板,到[root@utu-linux /]#命令窗口下:
[root@utu-linux /]# mount -t nfs -o nolock 192.168.1.200:/mnt/nfs /mnt/nfs
[root@utu-linux /]# cd /mnt/nfs
[root@utu-linux /]# chmod 777 qtopia434.sh
[root@utu-linux /]# ./qtopia434.sh
[root@utu-linux /]# cd examples
选择要启动的应用程序 #./t1 -qws
以上是一位网友所写,按他的做法我出现这样的错误出现这种错误libQtGui.so.4: symbol __floatsidf, version GCC_3.0 not defined in file libgcc_s.so.1 with link time reference。但你只要把arm-linux-gcc的lib考到上面的挂载目录/mnt/nfs,在你的开发板上得还设一环境变量LD_LIBRARY_PATH把它指定到上面提到的lib和qtcore434中的lib
我还试了别一种办法,不用挂载,直接把所有用到的arm-linux-gcc的lib和qtcore434中的lib考到板子上就行,设好上面所有提到的环境变量就行,再把你经过交叉编译的可执行文件考到板子上如(hello),执行./hello -qws 结果就出来了
(注意:arm-linux-gcc 的lib不是直接/arm/3.4.1/下的lib而是/arm/3.4.1/arm-linux/下的lib,不过这个库比较大,可以删除很多的,基本上保留librt.* libgcc*相关的几个就行,具体的可以试着看)