c++ - 在 VS2008 中为 WinCE 构建 OpenSSL

标签 c++ windows visual-studio-2008 openssl windows-ce

我正在尝试使用适用于 Windows CE 设备的 Visual Studio 2008 命令提示符构建 OpenSSL 1.0.2 版本。我正在使用 Windows 7、32 位机器。

我正在按照 INSTALL.WCE 文件中提到的说明进行操作。

以下是我正在执行的步骤:

  1. 我已经设置了 PATH、LIB 和 INCLUDE 变量。
  2. 运行“perl 配置 VC-CE”
  3. 运行“ms\do_ms”
  4. 运行“nmake -f ms\ce.mak”

下面是我遇到的错误

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

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'ARM'

NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.EXE"' : return code '0x458' Stop.

据我了解,这是因为我在 x86 机器上并尝试为 ARM 平台构建库而下降。我如何克服这个问题,因为 VS2008 没有交叉编译器。我可以在不使用 wcecomapt 库的情况下构建它吗?

最佳答案

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 中的说明进行操作。

关于c++ - 在 VS2008 中为 WinCE 构建 OpenSSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34493667/

相关文章:

visual-studio-2008 - 更改Windows Mobile 5.0模拟器RAM大小

c++ - 简化复杂的方法

c++ - Sqlite3 Select 查询慢,而插入/更新/删除没有问题

c++ - std::vector::resize() 与 std::vector::reserve()

windows - NetTcpBinding(读取 WindowsStreamSecurityBindingElement)如何加密/签署消息?

c++ - 控制 VS 2008/2010 中的尾随结构填充? (#pragma pack 还不够好)

c++ - 关于搜索和排序算法的问题

Windows 中的 C++ 高精度时间测量

c - C中的非阻塞 sleep 定时器

c++ - 将项目变成静态库