accross compile QT4.43

2019-07-13 01:40发布

 1步:安装许可证文件(商业版只) 如果你有商业版的Qt嵌入式Linux ,第一步是要安装您的授权文件作为的$ HOME / .qt许可。 开源版本则不需要许可证文件。 2步:打开存档 首先解压缩档案中的首选位置,然后打开它; cd  gunzip qt-embedded-linux-commercial-src-4.4.3.tar.gz tar xf qt-embedded-linux-commercial-src-4.4.3.tar tar –zxvf armtools.tar.bz2  //这个是交叉编译工具链 该文档假定档案解在以下目录: ~/qt-embedded-linux-commercial-src-4.4.3 配置交叉编译工具: Export PATH=/armtools路径/bin:$PATH 3步:交叉编译编译库 在建设的Qt嵌入式Linux库,运行。 / configure脚本来配置库的发展结构。您可以列出所有的配置 系统的选择输入。 / configure的帮助。 请注意,默认情况下, Qt的嵌入式Linux配置安装在/ usr/local/Trolltech/QtEmbedded-4.4.3目录, 但可以改变使用前缀选项。另外,前缀安装选项可以用来指定一个“地方”安装的源目录。 配置系统的另一个目的是让您指定您的平台架构:  cd  ~/qt-embedded-linux-commercial-src-4.4.3  ./configure -embedded [architecture] 一般情况下,所有的Linux系统有framebuffer支持可以使用的通用架构。其他典型的架构是的x86 ARMMIPS 下面是我配置时用的选项: ./configure -embedded arm -xplatform qws/linux-arm-g++ -qt-libpng -qt-gfx-linuxfb -qt-gfx-qvfb -qt-gfx-vnc -qt-gfx-transformed -qt-gfx-multiscreen -qt-kbd-usb –libdir /lib   注意:如果您想建立的Qt嵌入式Linux使用一个虚拟的framebuffer,通过- qvfb选项给configure脚本,另外 上面的命令选项 –libdir 选项是指编译后程序搜索库的路径,更多的选项可以参考 ./configure –h 查看配置选项。   要创建库和编译所有的demos, examples, tools,tutorials,请键入: Gmake 在编译完成之后可以不必安装(make install,我们仅仅是需要其交叉编译生成的库文件和其bin目录下生成的编译工具。 4步:搭建NFS环境 将文件系统解压到/fs 配置NFS文件 /etc/exports 内容:/fs *(rw,sync,no_root_squash,anonuid=0,anongid=0) 这里一定要设置后面的选项,否则开发板上通过NFS启动时候,会以匿名用户登陆,而QT程序运行需要root权限。 将第三步生成t-embedded-linux-commercial-src-4.4.3/lib目录的库文件拷贝到NFS中的/fs/lib目录下,这里可能还需要一些交叉编译工具里面的库,可以在需要的时候拷贝过来。 第五步:测试 1、先测试framebuffer 先保证内核已经加入framebuffer选项并编译今内核。测试程序在 qt-embedded-linux-commercial-src-4.4.3/example/qws/framebuffer/目录下。 如何出现红绿蓝三个矩形。则说明framebuffer可用正常使用。 2、在QTEdemos 目录下有演示程序,编译后拷贝到NFS目录中,这里要保证环境变量的设置,保证所需要的qmake make 等命令是指向qt-embedded-linux-commercial-src-4.4.3/bin目录下的命令, 3、在开发板上执行程序  ./程序名 –qws  这个-qws是必须要选的,这是保证QT程序是以server方式运行的,还可以有其他的选项,例如:-fn 字体选项, -bg 背景 {MOD}选项 –display 显示选项。 详细的可以参考其源码包中的qt-embedded.html 这个文件。   说明:在开始时,NFS没有配置为以root权限登陆,在创建/tmp下的创建的文件将是以匿名用户创建,而QT程序是需要root 用户组权限执行的,在将库裁剪后文件系统烧写到开发板上则不存在这个问题;   ps:在拷贝库文件时要用 -avfd参数 以保证拷贝过来的库文件属性不变,如要将文件系统烧写到目标板上,则需要先裁剪库,    这是我的NFS的配置文件内容:         /fs *(rw,sync,no_root_squash,anonuid=0,anongid=0)