• 9411阅读
  • 8回复

MINGW环境下编译4.4.3版,出错 [复制链接]

上一主题 下一主题
离线realhate
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-02
— 本帖被 XChinux 执行加亮操作(2008-10-02) —
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_BOOTSTRAPPED -DQT_MOC -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_NO_LIBRARY -DQT
_NO_STL -DQT_NO_COMPRESS -DQT_NO_DATASTREAM -DQT_NO_TEXTSTREAM -DQT_NO_TEXTCODEC
-DQT_NO_UNICODETABLES -DQT_NO_THREAD -DQT_NO_REGEXP -DQT_NO_QOBJECT -DQT_NO_SYS
TEMLOCALE -DQT_NO_GEOM_VARIANT -DQT_NO_USING_NAMESPACE -DQT_NODLL -I"..\..\corel
ib\arch\generic" -I"..\..\..\include" -I"." -I"..\..\..\include\QtCore" -I"." -I
"." -I"e:\MinGW\lib\gcc\mingw32\3.4.2\include" -I"e:\MinGW\include\c++\3.4.2\bac
kward" -I"e:\MinGW\include\c++\3.4.2\mingw32" -I"e:\MinGW\include\c++\3.4.2" -I"
e:\MinGW\include" -I"..\..\..\mkspecs\win32-g++" -o release\qlocale.o ..\..\core
lib\tools\qlocale.cpp
..\..\corelib\tools\qlocale.cpp: In function `char* qdtoa(double, int, int, int*
, int*, char**, char**)':
..\..\corelib\tools\qlocale.cpp:6244: error: `_clear87' undeclared (first use th
is function)
..\..\corelib\tools\qlocale.cpp:6244: error: (Each undeclared identifier is repo
rted only once for each function it appears in.)
..\..\corelib\tools\qlocale.cpp:6245: error: `_control87' undeclared (first use
this function)
mingw32-make[2]: *** [release/qlocale.o] Error 1
mingw32-make[2]: Leaving directory `E:/Workspace/Qt/4.4.3/src/tools/moc'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `E:/Workspace/Qt/4.4.3/src/tools/moc'
mingw32-make: *** [sub-moc-sub_src_target_ordered] Error 2

从早晨到晚上,无数遍的CONFIGURE无数遍的MAKE,都是这个毛病!有哪位知道在MINGW下编译4.4.3版有什么特殊的地方吗?
VC6\VC2003也都没有成功
_____________________________________________________

忘记说我编译的是静态版的
QMAKESPEC=WIN32-G++
QTDIR=e:\QT\4.4.3
PATH=E:\MINGW\BIN;E:\QT\4.4.3\BIN
INCLUDE=MINGW\所有INCLUDE
LIB=MINGW\LIB
CONFIGUE -DEBUG-AND-RELEASE -NOSTL -STATIC -PLATFORM WIN32-G++
今天第二遍的编译仍然是这个错误,到是VC6下编译成功,但是没加PLATFORM2003RC,没有加STLPORT
VC2008编译成功,链接错误
仍然郁闷中,VC6编译的库,程序界面非常粗糙,还是盼有人解决MINGW的编译
_____________________________________________________
经过不泄的努力,终于编译成功了,虽然废了很多周折,但是能成功就代表了努力没有白白费出,现在将出错原因以及如何避免奉上

出现上面的错误,比如_clear87,其实是因为一个头文件,就是WIN32的FLOAT.h文件,这个文件是支持浮点数的,这里不多介绍了,大家在兴趣的可以,去网上搜搜.
MINGW3.4.2自带的FLOAT.H有些老了,大家可以到SOURCEFORGE去下载最新的,当然也可以重装MINGW,比如现在最新的MINGW是3.4.5版本
在完成更换后,现在可以正常编译了,但是后面又出现了一个新问题,那就是STATIC编译的是表态版本,但是CONFIGURE生成的MAKEFILE仍然是老的MAKEFILE,这样就不可避免的出现链接时出现找不到库的情况,主要是下面的几个库:QTCORE/D,QTGUI/D,QTNEWWORK/D,QTSQL/D,QTXML/D,而老的MAKEFILE需要以上几个库的加4版本,比如QTCORE4/D4,解决的方法也很简单,一个是将所有生成的MAKEFILE中,需要QTCORE4/D4,QTGUI4/D4,QTNETWARE4/D4,QTSQL4/D4,QTXML4/D4,全部删除,不过这个方法,修改的MAKEFILE太多,另一种方法就是将以上十个文件,复制后在后面加上4.这样比较方便,不过文件很大,会占用一些地方,不过对于现在动辙百G的空间,也就无所谓了!
在这里祝那些困惑的朋友,都能成功


[ 此贴被realhate在2008-10-04 17:32重新编辑 ]
离线realhate

只看该作者 1楼 发表于: 2008-10-02
不管在VC6下或者VC2003下还是MINGW下,只要能告诉我怎样编译能成功,我就太感谢了,不为别的,只为了太伤自尊了!
离线XChinux

只看该作者 2楼 发表于: 2008-10-02
官方已经提供了mingw的完整编译,包括debug库的, 不需要自己编译了。
想编译的话,用VC2008编译吧,速度快。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zzh

只看该作者 3楼 发表于: 2008-10-03
configure -release -qt-zlib -qt-libpng -qt-sql-sqlite
make
我是这样编译的,我的就是mingw版的,用的是4.4.3,而且,我的系统是vista
离线XChinux

只看该作者 4楼 发表于: 2008-10-03
把configure参数要一个一个过一下,有些东西是mingw不能编译的(比如phonon,ssl等需要额外的库支持).
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zzh

只看该作者 5楼 发表于: 2008-10-03
qt 4.4开始-static参数就不能用了,我试验过好几次都是到webkit哪里就过不去了,去掉这个静态编译就一切正常了。
离线realhate

只看该作者 6楼 发表于: 2008-10-03
看来应该是5楼所说的那样,VC2008可编译,不能链接,VC6编译出的库,只能RELEASE,不能DEBUG,MINGW直接编译报错!
结贴,散分!
离线loaden
只看该作者 7楼 发表于: 2010-01-23
我也遇到同样错误,不过我的版本是MinGW 4.4.3,float.h的版本足够了。
我是自己编译的MinGW。
如果我使用MinGW TDM版,则不会遇到这样的错误。
离线loaden
只看该作者 8楼 发表于: 2010-01-27
真正的原因找到了:将MinGW下的stddef.h和float.h拷贝到Qt安装目录/include下就可以了。
快速回复
限100 字节
 
上一个 下一个