怎样交叉编译QT程序使之能在目标板上运行!?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样交叉编译QT程序使之能在目标板上运行!?相关的知识,希望对你有一定的参考价值。

我用的系统是ubuntu11.10,我已经在PC机上运行用qvfb运行了我的QT程序,可是,我想把我的QT程序放到我的开发板(s3c2410)上运行!我已经编译好了qt-4.4.3-ARM,他下面有个bin文件,里面有qmake,在PC机上编译的QT程序时候,我进入到要编译的程序中,在终端输入的命令是:qmake -project,qmake,make。可是要编译能在板子上运行的程序,应该怎么设定环境变量呢,因为默认的编译器都是gcc,我已经安装了交叉编译器为arm-linux-gcc3.4.1,在root目录的隐藏文件中添加了环境变量:export PATH=$PATH:/usr/local/3.4.1bin$PATH,还需要修改哪些使我能在PC机就能够编译在板子上运行的可执行文件!!

最主要的还是,你的QT在PC上运行的x86的,最后要换成arm结构的,你得怀疑下你的bin是不是真的是arm架构的。追问

是ARM架构的!这个是编译好的。以前有人用过。好使的。我今天修改了一下默认qmake的路径,我用ehco $PATH查看当前环境变量,然后用PATH=/usr/local/qt-4.4.3-arm/bin$PATH,将环境变量前面加上了已经编译好的ARM结构的qmake路径,然后重新编译我的程序,还是编译X86版本的,我都快疯了!!怎么回事呢???求深解???谢谢!我都查了还几天了,一直没弄出来,现在弄毕设,很纠结!!

来自:求助得到的回答
参考技术A 是不是应该把之前你在PC端的环境变量注释掉,然后添加ARM板QT的编译环境变量?您好,我也想问您这个问题:如何把在PC上的QT程序下载到板子上?期待楼主详解,谢谢

如何在hadoop环境下运行C程序?

程序在单机上用GCC编译运行通过,现在有三台机子装了hadoop,需要怎样配置使之能在hadoop环境下运行,谢谢!请务必叙述详尽。
root@linc-OptiPlex-780:/home/public/hadoop/hadoop-0.20.2# bin/hadoop jar ./contrib/streaming/hadoop-0.20.2-streaming.jar -D mapred.reducer.task=0 -input kmeans -output /bin/cat -mapper /root/c/kmeans -file /root/c/ipFile.txt -file /root/c/opFile.txt
这是我用的命令,
11/05/25 10:49:37 INFO streaming.StreamJob: map 0% reduce 0%
11/05/25 10:50:08 INFO streaming.StreamJob: map 100% reduce 100%
11/05/25 10:50:08 INFO streaming.StreamJob: To kill this job, run:
11/05/25 10:50:08 INFO streaming.StreamJob: /home/public/hadoop/hadoop-0.20.2/bin/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201105241748_0015
11/05/25 10:50:08 INFO streaming.StreamJob: Tracking URL: http://linc-OptiPlex-780:50030/jobdetails.jsp?jobid=job_201105241748_0015
11/05/25 10:50:08 ERROR streaming.StreamJob: Job not Successful!
11/05/25 10:50:08 INFO streaming.StreamJob: killJob...
Streaming Job Failed!

hadoop有一个streaming工具,
在hadoop文件夹下的mapred/contrib里
你百度一下streaming工具的使用方法即可追问

我用了streaming工具,我的程序只有mapper段,没有reducer,并且程序是带参数运行的,在网上看了要用-file传递,但是没有输入文件,那-input要 输入什么?

追答

-input 是你mapreduce任务的输入文件或文件夹,是在hdfs下的路径
-file 是将需要传到每台任务机器上的临时文件夹的文件
这两个选项可以设多个,就是同时设置多个输入文件路径,并可以传多个临时文件。
这个临时文件夹就是每台机器运行你的mapper子程序的当前目录。
比如:
hadoop jar streaming.jar -input mapreduce输入路径 -file 本地map程序文件 -file map程序需要的文件(比如配置文件啦之类的) -mapper "./map arg1 arg2" -numReducer 0
这个命令行的意思就是,一个-input选项指定了本mapreduce的输入文件,两个 -file 选项把本地的map程序和配置文件上传到集群中,这样-mapper命令就可以直接使用当前路径调用map程序了(-mapper "./map arg1 arg2",其中arg1 arg2就是map程序的命令行参数)。而-numReducer 表示reduce的数目,如果设置成0,那么map的输出就是最终结果了,不会再经过一道reduce。

注意,streaming面向的是处理一条条字符串记录,如果想要处理二进制非字符串文件的话,需要重写streaming里提供的一些writer reader接口。

假设你的输入文件是/root/c/ipFile.txt,输出目录/root/c/output(hadoop只支持提供一个输出目录,并且要由它来创建)我觉得你的命令应该写成这样:
/home/public/hadoop/hadoop-0.20.2# bin/hadoop jar ./contrib/streaming/hadoop-0.20.2-streaming.jar -input /root/c/ipFile.txt -output /root/c/output -mapper "./kmeans" -file /root/c/kmeans -numReducer 0

参考技术A hadoop本身是用java写的,但Hadoop流提供API允许执行任何语言编写的程序,通过标准输入读取数据,和标准输出写出数据,详见hadoop权威指南 参考技术B (1)切换到执行hadoop 命令的目录:bin/start-all.sh
(2)Hadoop系统上输入以下命令运行程序:
bin/haddop jar contrib/streaming/hadoop-0.20.2-streaming.jar -mapper mapper -reducer reducer -input ipFile -output c_output -jobconf maprd.reduce.tasks=0

以上是关于怎样交叉编译QT程序使之能在目标板上运行!?的主要内容,如果未能解决你的问题,请参考以下文章

紧急求助,关于arm版本下QWT库移植出现的错误

如何将Linux下的QT程序移植到arm板上

Linux系统移植 ------搭建交叉编译环境

有关linux下的QT应用程序如何在开发板上运行?急!!!谢谢各位

简析交叉编译器的命名规则

opencv arm交叉编译与仿真验证详细流程