天嵌 ARM开发社区

 找回密码
 注册
查看: 2395|回复: 4

QT 编译问题,请帮忙看看原因咯

[复制链接]
easilylk 发表于 2010-2-28 09:27:15 | 显示全部楼层 |阅读模式
我使用的系统是FC10按照本站视频教程在VM6.5上完全安装OK,并安装了4.3.3编译器,
参考天嵌科技出品--Qt程序开发完全手册(上)之24小时超级版本_发行版_20090707.pdf
使用qtopia-1.7.0-20090525.tar.bz2安装包。
操作步骤如下:
tar xvfj /mnt/hgfs/src/qtopia-1.7.0-20090525.tar.bz2 -C /
cd /opt/EmbedSky/Qte/
gedit x86-build_qtopia    与附件1对比检查无误后退出
./x86-build_qtopia
编译运行出现如下错误
g++  -c -I/usr/X11R6/include -I/opt/EmbedSky/Qte/qt-x11/include -I/usr/X11R6/include -pipe -O2 -Wall -W  -DQT_BUILTIN_GIF_READER=0 -DQT_NO_IMAGEIO_JPEG -DQT_NO_IMAGEIO_MNG -DQT_NO_SM_SUPPORT -DQT_NO_XKB  -I/opt/EmbedSky/Qte/qt-x11/src/3rdparty/zlib -I/opt/EmbedSky/Qte/qt-x11/src/3rdparty/libpng  -o xml/qxml.o xml/qxml.cpp
xml/qxml.cpp:1518: warning: unused parameter 'ret'
/opt/EmbedSky/Qte/qt-x11/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QMap<QString, QString>]':
xml/qxml.cpp:513:   instantiated from here
/opt/EmbedSky/Qte/qt-x11/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QMap<QString, QString> >' to 'const char* ' for argument 'l' to 'int remove(const char*)'/opt/EmbedSky/Qte/qt-x11/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QString]':
xml/qxml.cpp:2502:   instantiated from here
/opt/EmbedSky/Qte/qt-x11/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QString>' to 'const char*' for argument 'l' to 'int remove(const char*)'make: *** [xml/qxml.o] Error 1
make: Leaving directory `/opt/EmbedSky/Qte/qt-x11/src'
tar: qt.tar.bz2: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
cp: cannot stat `qt-x11/bin/?*': No such file or directory
./x86-build_qtopia: line 78: cd: qtopia/src: No such file or directory
编译器信息如下:
[root@easily Qte]# g++ -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-cpu=generic --build=i386-redhat-linux
Thread model: posix
gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)
[root@easily Qte]# gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-cpu=generic --build=i386-redhat-linux
Thread model: posix
gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)
[root@easily Qte]# arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/maxim/arm-lite/src-4.3-arm-none-linux-gnueabi-lite/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}' --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q1-176' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)
[root@easily Qte]# arm-linux-g++ -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/maxim/arm-lite/src-4.3-arm-none-linux-gnueabi-lite/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}' --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q1-176' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)
[root@easily Qte]#


请问这属于什么问题呢?我应该怎么修改呢?
需要改源码吗?
 楼主| easilylk 发表于 2010-2-28 09:35:05 | 显示全部楼层
看错误仿佛是在编译qt-x11时的make -C src这步出错的!
亚瑟王 发表于 2010-3-1 11:01:14 | 显示全部楼层
编译器版本过高,对代码的解释不同导致的错误,建议你使用redhat9编译x86版本的qtopia-1.7.0,使用arm-linux-gcc-3.4.5编译器arm版本的qtopia-1.7.0.
 楼主| easilylk 发表于 2010-3-2 20:31:20 | 显示全部楼层
恩,我是按照“天嵌科技出品--Qt程序开发完全手册(上)之24小时超级版本_发行版_20090707.pdf”上面要求装的。先用4.3.3版的编译器编译X86版的qtopia-1.7.0,然后用3.4.5版的编译器编译qtopia-1.7.0,现在ARM版的都编译过了,X86版的QT-X11和QTE都编译过了,就是QPE编不过去,
以上的错误我在网上查看已经刚解决,要修改源码,在出错行,的remove前加个“this->”,就OK了,
但是在编译QPE时,先是出现如下错误:
img.c:723: error: static declaration of 'pgm_iformat' follows non-static declaration

在网上没找到解决办法,我就按着错误提示,试探性的在源码中把定义该结构体前的static去掉了,结果就又编译过了,

然后就又编译了一会出现如下错误就不知道怎么改了啊:
make[1]: Entering directory `/opt/EmbedSky/Qte/x86_qtopia/qtopia/src/applications/sysinfo'
gcc -L/opt/EmbedSky/Qte/x86_qtopia/qtopia/lib -Wl,-rpath,/opt/EmbedSky/Qte/x86_qtopia/qtopia/lib -L/opt/EmbedSky/Qte/x86_qtopia/qt/lib -Wl,-rpath,/opt/EmbedSky/Qte/x86_qtopia/qt/lib   -o /opt/EmbedSky/Qte/x86_qtopia/qtopia/bin/sysinfo .obj/linux-generic-g++//memory.o .obj/linux-generic-g++//graph.o .obj/linux-generic-g++//load.o .obj/linux-generic-g++//storage.o .obj/linux-generic-g++//versioninfo.o .obj/linux-generic-g++//sysinfo.o .obj/linux-generic-g++//main.o .obj/linux-generic-g++//moc_memory.o .obj/linux-generic-g++//moc_graph.o .obj/linux-generic-g++//moc_load.o .obj/linux-generic-g++//moc_storage.o .obj/linux-generic-g++//moc_versioninfo.o .obj/linux-generic-g++//moc_sysinfo.o  -lqpe -lqtopia -lqte  
/opt/EmbedSky/Qte/x86_qtopia/qtopia/lib/libqpe.so: undefined reference to `__cxa_guard_release'
/opt/EmbedSky/Qte/x86_qtopia/qtopia/lib/libqpe.so: undefined reference to `__cxa_guard_acquire'
collect2: ld returned 1 exit status
make[1]: *** [/opt/EmbedSky/Qte/x86_qtopia/qtopia/bin/sysinfo] Error 1
make[1]: Leaving directory

你们这个手册上的意思应该是要用这个4.3.3的编译器编译QPE吧?
`/opt/EmbedSky/Qte/x86_qtopia/qtopia/src/applications/sysinfo'
make: *** [applications/sysinfo] Error 2
亚瑟王 发表于 2010-3-3 16:19:04 | 显示全部楼层
在3楼已经给你回答了:编译器版本过高,对代码的解释不同导致的错误,建议你使用redhat9编译x86版本的qtopia-1.7.0,使用arm-linux-gcc-3.4.5编译器arm版本的qtopia-1.7.0.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-4 20:27 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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