当前位置:  技术问答>linux和unix

qt embedded 2.37 自己写的hello 交叉编译出错,大家帮帮忙,谢谢

    来源: 互联网  发布时间:2016-09-06

    本文导语:  先说一下我的环境:  操作系统 :Fefora 8 (自带gcc 版本是4.12) 开发板:优龙FS2410 ◆ tmake 1.11 或更高版本; (生成 Qt/Embedded 应用工程的 Makefile 文件) ◆ Qt/Embedded 2.3.7 (Qt/Embedded 安装包) ◆ Qt 2.3.2 for X11; (Qt...

先说一下我的环境: 
操作系统 :Fefora 8 (自带gcc 版本是4.12)
开发板:优龙FS2410

◆ tmake 1.11 或更高版本; (生成 Qt/Embedded 应用工程的 Makefile 文件)
◆ Qt/Embedded 2.3.7 (Qt/Embedded 安装包)
◆ Qt 2.3.2 for X11; (Qt 的 X11 版的安装包, 它将产生 x11 开发环境所需要的两个工具)
◆ GCC 3.2.3
◆ 交叉编译器 cross-3.3.2

下面是我的真实经历,也是我为什么选择GCC 3.2.3 的原因(有点长啊,我从自己博客复制过来的):

    拿到板子后,兴奋不已,心想终于拿到你了,这下可以真枪实弹地实验一把了,可谁又料到噩梦是一个接着一个。一有时间我就按照FS2410使用手册,一步一步实验,前面的还好,都是一些理论知识,有一些可以暂时不理。

等到编译Linux内核的时候,第一个噩梦就开始了,我先说一下编译环境,操作系统是 Fedora 8,系统自带GCC 版本是4.1.2,在编译内核error一大筐,对一个刚接触linux的新手来说,真是一个很大的打击,因为我就想按照手册一步一步踏踏实实走下来,前面的问题不解决我不想看后面的东西,怎么办呢,身边也没有高手,虽然有错误提示,咱也看不懂啊,接下来就是半年的郁闷,真是没有心思再去碰它了。

也就是上周吧,带着沉重的心情再次打开上次出现问题的那一页,上网查查吧,说不定会有收获,果不其然,相同的问题还不少,有可以是编译器GCC版本太高的原因,我就想难道GCC不向前兼容,那就试试吧,我就下了一个GCC 3.4.3 ,装了一下,还真的编译通过了,那个高兴劲儿就别提了,真的,对于我来说,这就是解决了一个大问题。

我就高歌前进,终于看到QT开发这一章了,说实话,这才是我最终的目标。QT开发这第一步就是部署开发环境,安装TMAKE的时候还顺利,等到安装 Qt/Embedded 2.3.7,这第二个噩梦就开始了,还是错误一大筐,有了上次的经验我就直接上网查,网上说什么的都有,很有可能是编译器版本的问题,难道GCC 3.4.3还高,再说了,安装一个编译器也要半个多小时呢,唉,那有什么办法呢,试试看,我就装了一个GCC 3.3.1,果然通过了,就是GCC的原因,我就趁着招呼劲儿编译安装 Qt/X11 2.3.2,你猜怎么了,对了,又出问题了,心想学一点东西它怎么就那么难呢,不会又是GCC的问题吧,GOOGLE一通,判断有可能是GCC的问题,那就再安装一个低版本的吧,装个gcc-3.2.3,编译顺利通过,妈呀,终于通过了。

这就告一段落吧,通过上面的问题总结如下。
1、Linux的发行版本比较混乱,这点跟WINDOWS相比有点差距。
2、手册上的例子的环境都比较旧,再加上GCC版本不兼容的问题,最好装个比较低的开发环境。

现在转入正题,说一下我遇到的问题:
我自己做了一个Hello World  程序,很简单,程序应该没有什么问题,我主要是想先在仿真开发环境测试下,
然后再交叉编译成arm平台的程序。下面是我的操作过程

-、[/b]仿真环境下编译Hello World[/b],顺利通过没有什么问题
[root@wcs test]# gcc -v
gcc version 3.2.3

[root@wcs test]# make
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/usr/local/qt/x86-qt/qt/include -o hello.o hello.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/usr/local/qt/x86-qt/qt/include -o main.o main.cpp
/usr/local/qt/x86-qt/qt/bin/moc hello.h -o moc_hello.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/usr/local/qt/x86-qt/qt/include -o moc_hello.o moc_hello.cpp
gcc  -o hello hello.o main.o moc_hello.o  -L/usr/local/qt/x86-qt/qt/lib -lm -lqte
[root@wcs test]# qvfb &
[1] 5729
[root@wcs test]# Using display 0

[root@wcs test]# ./hello -qws
Connected to VFB server: 240 x 320 x 32
[root@wcs test]# cd ../../../arm-qt/

二、交叉编译Hello World[/b],问题就出在这个阶段
[root@wcs test]# echo $TMAKEPATH
/usr/local/qt/arm-qt/tmake/lib/qws/linux-arm-g++
[root@wcs test]# echo $QTDIR
/usr/local/qt/arm-qt/qt
[root@wcs test]# tmake -o Makefile hello.pro

[backcolor=#cccccc]下面是tmake生成的关键部分,都是按照手册配置的:[/backcolor]
[backcolor=#cccccc]CC    =    arm-linux-gcc[/backcolor]
[backcolor=#cccccc]CXX    =    arm-linux-g++[/backcolor]
[backcolor=#cccccc]CFLAGS    =    -pipe -Wall -W -O2 -DNO_DEBUG[/backcolor]
[backcolor=#cccccc]CXXFLAGS=    -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG[/backcolor]
[backcolor=#cccccc]INCPATH    =    -I$(QTDIR)/include[/backcolor]
[backcolor=#cccccc]LINK    =    arm-linux-g++[/backcolor]
[backcolor=#cccccc]LFLAGS    =    [/backcolor]
[backcolor=#cccccc]LIBS    =    $(SUBLIBS) -L/usr/local/arm/3.3.2/lib -L$(QTDIR)/lib -lm -lqte[/backcolor]

[root@wcs test]# make
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/local/qt/arm-qt/qt/include -o hello.o hello.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/local/qt/arm-qt/qt/include -o main.o main.cpp
/usr/local/qt/arm-qt/qt/bin/moc hello.h -o moc_hello.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/local/qt/arm-qt/qt/include -o moc_hello.o moc_hello.cpp
arm-linux-g++  -o hello hello.o main.o moc_hello.o  -L/usr/local/arm/3.3.2/lib -L/usr/local/qt/arm-qt/qt/lib -lm -lqte
/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld: skipping incompatible /usr/local/qt/arm-qt/qt/lib/libqte.so when searching for -lqte
/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld: cannot find -lqte
collect2: ld returned 1 exit status
make: *** [hello] 错误 1

上面的错误说明已经找到了libqte.so,[b][color=#000000]但是和[/color][/b]arm-linux-g++不兼容,难道我用GCC3.2.3交叉编译生成的Qt/Embedded 和 cross-3.3.2不兼容,是这样吗,真的头大了

请高手明示,在线等待

|
QTE库也要交叉编译,并且环境变量要指向交叉编译的库。

可以用命令来看一下你的库是否正确:
#cd $QTEDIR/lib
#file libqte.so.2.3.7

看看这个库文件的格式是什么,是X86的,还是ARM的

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Qt/Embedded 编译时找不到"math.h"库怎么办
  • QT-embeded版本编译问题????
  • 安装QT/Embedded编译时出错
  • linux下QT/Embedded编译出错,请各位帮忙
  • java命名空间javax.accessibility类accessiblerelation的类成员方法: embedded_by_property定义及介绍
  • systemtap 关于embedded c中输出到屏幕使用什么函数
  • java命名空间javax.accessibility类accessiblerelation的类成员方法: embedded_by定义及介绍
  • [提问]关于Qt/Embedded
  • java命名空间java.awt.font类textattribute的类成员方法: bidi_embedding定义及介绍
  • Embedded Profiler
  • 嵌入式数据管理 Embedded InnoDB
  • embedded linux开发和linux开发 要求的知识领域有什么不同?
  • 求购Linux embeded browser?
  • 请教 可以scan Embedded Linux系统的工具
  • 急:qt/embedded lcd显示颜色问题
  • QT/Embedded
  • Embedded controller
  • Java Embedded Python
  • 入门,qt/embedded安装
  • Embedded Slackware
  • 求关于Konqueror/Embedded的移植开发的资料
  • qt/embedded 需要收费吗?
  • 既然有moblin的专区,是否应该成立Embedded Linux专区呢
  • 请教konqueror-embedded问题
  • 新手提问,关于qt、qt/embedded方面的在哪个板块有啊,谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3