我正在尝试使用Visual Studio 2008命令提示符为Windows CE设备构建OpenSSL 1.0.2版本。我使用的是Windows 7,32位机器。
我按照INSTALL.WCE文件中提到的说明进行操作。
以下是我要遵循的步骤:
以下是我所面临的错误
lib / nologo /out:out32_ARMV4I\ssleay32.lib @C:\ Users \ AppData \ Local \ Temp \ nmBC93.tmp cl / Fotmp32_ARMV4I \ constant_time_test.obj -Iinc32 -Itmp32_ARMV4I / O1i / W3 / GF / Gy / nologo -D UNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD - DOPENSSL_SMALL_FOOTPRINT -D_WIN32_WCE = 500 -DUNDER_CE = 500 -DWCE_PLATFORM_VC-CE -DARM -D_ARM_ -DARMV4I
-QRarch4T -QRinterwork-return / MT -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_KRB5 -DOPENSSL_NO_ JPAKE -DOPENSSL_NO_DYNAMIC_ENGINE / Zi / Fdtmp32_ARMV4I / app -c。\ crypto \ constant_time_test.c constant_time_test.c link / nologo / opt:ref /subsystem:windowsce,5.00 / machine:ARM / debug /out:out32_ARMV4I\constant_time_test.exe
C:\ Users \ AppData \ Local \ Temp \ nmBE87.tmp tmp32_ARMV4I \ constant_time_test.obj
致命错误LNK1112:模块机器类型' X86'与目标机器类型的冲突' ARM'
NMAKE:致命错误U1077:'" C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ BIN \ link.EXE"' :返回代码' 0x458'停止。
根据我的理解,由于我在x86机器上并尝试为ARM平台构建库,因此这种情况正在下降。我如何克服这个问题,因为VS2008没有交叉编译器。我可以在不使用wcecomapt库的情况下构建它吗?
答案 0 :(得分:1)
PATH,LIB和INCLUDE设置不正确;你似乎正在使用x86工具链构建。 C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.EXE
是x86的链接器,而不是ARM。使用VS2008的交叉编译器时,正确的链接器为c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm\link.EXE
。
INSTALL.WCE包含不完全适用于VS2008的eMbedded Visual C ++说明 - 特别是VS2008中明显缺少设置环境的批处理文件。您必须自己查找和/或创建它们,这几乎是关于将PATH,INCLUDE和LIB分别指向交叉编译器,CE SDK的头文件和库。
假设您确实安装了交叉编译器,无论是从VS2008还是其中一个设备SDK,都可以使用。如果您没有安装交叉编译器,并且因为您正在尝试为CE 5构建,那么您还可以获得免费提供的eMbedded Visual C ++;如果你这样做,一定要抓住SP4。有了它,您应该能够按照INSTALL.WCE中的说明进行操作。