• 9027阅读
  • 0回复

vs2008编译ARM-WINCE6.0的Qt4.6.3出错 [复制链接]

上一主题 下一主题
离线luohui8891
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-12
— 本帖被 XChinux 执行加亮操作(2010-10-21) —
各位好,小弟最近拿到一块板子是ARM11的,烧写了WINCE6.0的内核。想移植Qt4.6.3到板子上去。我的交叉编译环境为:WindowsXP SP3 + VS2008
于是按着以前的经验开始了交叉编译工作:

1.下载并解压了qt-everywhere-opensource-src-4.6.3,确保该目录的绝对路径没有空格和中文;

2.将qt-everywhere-opensource-src-4.6.3\bin加入到环境变量PATH中;

3.在Visual Studio Tools中打开命令提示符窗口(已经设置好nmake等环境变量);

4.配置Qt库,参数如下所示:
configure.exe -release -shared -fast -exceptions -stl -no-dsp -vcproj -qmake -no-style-windows -no-style-windowsxp -no-style-windowsvista -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -saveconfig "wince" -qt-zlib -qt-gif -qt-libpng -no-libjpeg -no-libmng -no-qt3support -platform win32-msvc2008 -xplatform wince60standard-armv4i-msvc2008 -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-script -no-scripttools -no-webkit
说明:突然发现qt-everywhere-opensource-src-4.6.3\mkspecs下并没有wince60standard-armv4i-msvc2008,在参考了改目录下其他spec和网上的资料以后,自己增加了wince60standard-armv4i-msvc2008,我是这么做的,直接拷贝一份wince60standard-armv4i-msvc2005目录,将名字改成wince60standard-armv4i-msvc2008,然后将该目录下的qmake.conf的内容改为:
include(../wince60standard-armv4i-msvc2005/qmake.conf)
QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
QMAKE_COMPILER_DEFINES += _MSC_VER=1500

5.在配置完成以后,设置编译的环境变量,我的设置是这样的:
set INCLUDE=D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;D:\Program Files\Windows CE Tools\wce600\magellan\Include\Armv4i
set LIB=D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;D:\Program Files\Windows CE Tools\wce600\magellan\Lib\ARMV4I
set PATH=D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%
说明:D:\Program Files\Microsoft Visual Studio 9.0为本人的VS2008安装目录,D:\Program Files\Windows CE Tools\wce600\magellan为板子上内核的SDK安装目录。

6.然后执行nmake命令,进行漫长的交叉编译过程,果断报错,最后一段信息为:
        E:\Qt\qt-everywhere-opensource-src-4.6.3\bin\moc.exe -DUNDER_CE -DWINCE
-D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DS
TANDARDSHELL_UI_MODEL -D_WIN32_WCE=0x600 -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -D
ARM -D_M_ARM -DARM -D_WIN32 -D__arm__ -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_C
ORE_LIB -DQT_THREAD_SUPPORT -DQT_NO_DYNAMIC_CAST -I"..\..\..\include\QtCore" -I"
..\..\..\include\QtGui" -I"..\..\..\include" -I"..\..\..\include\ActiveQt" -I"tm
p\moc\release_shared" -I"..\..\..\mkspecs\wince60standard-armv4i-msvc2008" -D_MS
C_VER=1500 freezetablewidget.h -o tmp\moc\release_shared\moc_freezetablewidget.c
pp
        e:\Qt\qt-everywhere-opensource-src-4.6.3\bin\rcc.exe -name grades grades
.qrc -o tmp\rcc\release_shared\qrc_grades.cpp
        cl -c -nologo -Zm200 -Zc:wchar_t- -O2 -MD -EHsc -W3 -w34100 -w34189 -DUN
DER_CE -DWINCE -D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_
PRINTDIALOG -DSTANDARDSHELL_UI_MODEL -D_WIN32_WCE=0x600 -DARMV4I -D_ARMV4I_ -Dar
mv4i -D_ARM_ -DARM -D_M_ARM -DARM -D_WIN32 -D__arm__ -DQT_DLL -DQT_NO_DEBUG -DQT
_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NO_DYNAMIC_CAST -I"..\..\..\incl
ude\QtCore" -I"..\..\..\include\QtGui" -I"..\..\..\include" -I"..\..\..\include\
ActiveQt" -I"tmp\moc\release_shared" -I"..\..\..\mkspecs\wince60standard-armv4i-
msvc2008" -Fotmp\obj\release_shared\ @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nmA2D.t
mp
main.cpp
D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum(69) : warning
C4996: 'wcstombs': This function or variable may be unsafe. Consider using wcst
ombs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online
help for details.
        d:\program files\windows ce tools\wce600\magellan\include\armv4i\stdlib.
h(494) : 参见“wcstombs”的声明
D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum(98) : warning
C4996: 'mbstowcs': This function or variable may be unsafe. Consider using mbst
owcs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online
help for details.
        d:\program files\windows ce tools\wce600\magellan\include\armv4i\stdlib.
h(489) : 参见“mbstowcs”的声明
freezetablewidget.cpp
D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum(69) : warning
C4996: 'wcstombs': This function or variable may be unsafe. Consider using wcst
ombs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online
help for details.
        d:\program files\windows ce tools\wce600\magellan\include\armv4i\stdlib.
h(494) : 参见“wcstombs”的声明
D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum(98) : warning
C4996: 'mbstowcs': This function or variable may be unsafe. Consider using mbst
owcs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online
help for details.
        d:\program files\windows ce tools\wce600\magellan\include\armv4i\stdlib.
h(489) : 参见“mbstowcs”的声明
.\freezetablewidget.cpp(86) : error C2039: “setStyleSheet”: 不是“QTableView”
的成员
        e:\qt\qt-everywhere-opensource-src-4.6.3\include\qtgui\../../src/gui/ite
mviews/qtableview.h(58) : 参见“QTableView”的声明
正在生成代码...
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 9.0\VC\ce
\bin\x86_arm\cl.EXE"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 9.0\VC\BI
N\nmake.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “""D:\Program”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “""D:\Program”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “""D:\Program”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “""D:\Program”: 返回代码“0x2”
Stop.
很奇怪的报错吧,freezetablewidget.cpp(86) : error C2039: “setStyleSheet”: 不是“QTableView”的成员,这个是一个example的例子中的文件。后来我加了-nomake example参数,报错依旧。现在很没头绪,不知道该怎么做了,错了至少要知道哪里错了,有没有朋友遇到过或者解决过这种问题的?还请指导一下。可以回帖联系或者发我gmail邮箱(用户名和本站一样)。

快速回复
限100 字节
 
上一个 下一个