嵌入式爱好者

查看: 14531|回复: 6

QT程序移植成功经验分享

  [复制链接]

69

主题

184

帖子

338

积分

RK3568通行证

扫一扫,手机访问本帖
发表于 2013-3-24 15:00:57 | 显示全部楼层 |阅读模式
第一步:搭建好交叉编译环境arm-linux-gcc-4.3.2.
第二步:交叉编译用于将QT代码编译为ARM平台上的可执行文件的库文件,复制qt-everywhere-opensource-src-4.7.1.tar.gz到/home/liu下面,解压出来,该文件夹下面build-all为编译脚本,qt-everywhere-opensource-src-4.7.1.tar.gz为源码包,打开终端,切换到/home/liu/qt-everywhere-opensource-src-4.7.1目录,执行编译脚本./build-all开始编译,大概两三个小时编译完成,此时会自动在/opt/下面生成文件夹qt-4.7.1,同时在当前目录生成qt-everywhere-opensource-src-4.7.1文件夹,该文件夹下的demo目录为示例,可以直接拷贝到开发板运行.
第三步:设置QT的编译环境,如果没有设置的话,每次都需要/opt/qt-4.7.1/bin/qmake 来编译程序,默认安装了qt-sdk-linux-x86-opensource-2010.05.1.bin后默认用的qmake是用来编译linux下程序用的,而不是嵌入式linux下的,需要重新设置环境变量,打开/etc/profile文件,最后添加
export PATH="/opt/qt-4.7.1/bin:$PATH"
这样的话qmake -v可以看到当前qmake为/opt/qt-4.7.1下面的.
第四步:测试窗口程序main.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
        QApplication a(argc,argv);
        QLabel *label=new QLabel("hello!!!");
        label->setGeometry(10,10,200,80);
        label->setVisible(true);
        label->show();

        return a.exec();
}
保存到/home/liu/hello/下
打开终端,cd /home/liu/hello切换到hello目录
执行qmake -project,此时生成了hello.pro文件
执行qmake,此时生成了Makefile文件
执行make,此时生成了hello可执行文件
可以通过命令file /home/liu/hello/hello来查看可执行文件的运行环境,出现for GNU/Linux 2.6.14字样,说明可以运行在linux2.16.14内核版本的嵌入式linux系统上
第五步:拷贝hello到/bin目录下,赋予可执行文件权限chmod 777 hello
./hello
看到了吧,出来咯!

该会员没有填写今日想说内容.
回复

使用道具 举报

69

主题

184

帖子

338

积分

RK3568通行证

 楼主| 发表于 2013-3-24 15:02:15 | 显示全部楼层
8:linux交叉编译环境搭建
第一步:准备arm-linux-gcc-4.3.2.tgz文件,将其解压到/home/administrator下面。解压过程需要一段时间,解压后形成了usr/local/文件夹。
第二步:将usr/local/arm文件夹复制到根目录下的/usr/local下。
命令:cd usr/local          cp -rv arm /usr/local/
这个过程大概需要一分钟,完成后交叉编译的程序集都在/usr/local/arm/4.3.2/bin下面。
第三步:修改环境变量,找到/etc/profile,以管理员身份打开,最后一行增加
export PATH="$PATH:/usr/local/arm/4.3.2/bin"
第四步:使环境变量生效,方法一是重启电脑,方法二命令执行
source /etc/profile
echo $PATH查看环境变量
显示内容中包含了/usr/local/arm/4.3.2/bin则说明设置成功。
第五步:测试编译环境是否OK,执行arm-linux-gcc.4.3.2 -v
显示gcc version 4.3.2字样,说明编译环境设置成功。
第六步:编写测试文件hello.c
#include <stdio.h>
int main(int argc, char const *argv[])
{
        /* code */
        printf("feiyangqingyun2013\n");
        return 0;
}
第七步:编译hello.c
arm-linux-gcc -o hello hello.c
此时会在当前目录下生成hello可执行文件(ARM平台),如果程序有错,编译通不过。
可以用file hello命令查看生成的文件类型。
如果想在PC机上看结果,可以执行下面的命令
gcc hello.c(会生成a.out文件)
./a.out
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

medophin 该用户已被删除
发表于 2013-5-9 17:12:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

medophin 该用户已被删除
发表于 2013-5-9 17:37:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2013-5-18 08:58:35 | 显示全部楼层
感谢楼主,楼主如果有新的资源可以多多发帖啊
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
回复 支持 反对

使用道具 举报

lim680 该用户已被删除
发表于 2013-6-25 14:24:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

6

帖子

12

积分

发表于 2016-8-22 17:21:23 | 显示全部楼层
:lol多谢分享,Mark一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-22 12:24

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表