如何使用MSYS在Windows上为Android构建OpenSSL

如何使用MSYS在Windows上为Android构建OpenSSL,android,openssl,cross-compiling,msys,building,Android,Openssl,Cross Compiling,Msys,Building,正如标题所示,我一直在尝试为Android构建OpenSSL库。基本上,我在跟踪 我已经通过MinGW安装管理器安装了msys base ActiveState perl安装在“C:\Perl64\bin\perl.exe”上 运行“C:\MinGW\msys\1.0\msys.bat”后,我设置了环境变量: CC=C:\android\android-ndk-r11c\toolschains\arm-linux-androideabi-4.9\prebuilded\windows-x86\u

正如标题所示,我一直在尝试为Android构建OpenSSL库。基本上,我在跟踪

我已经通过MinGW安装管理器安装了msys base

ActiveState perl安装在“C:\Perl64\bin\perl.exe”上

运行“C:\MinGW\msys\1.0\msys.bat”后,我设置了环境变量:

CC=C:\android\android-ndk-r11c\toolschains\arm-linux-androideabi-4.9\prebuilded\windows-x86\u 64\bin\arm-linux-androideabi gcc.exe

AR=C:\android\android-ndk-r11c\toolschains\arm-linux-androideabi-4.9\prebuilded\windows-x86\u 64\bin\arm-linux-androideabi-gcc-AR.exe

ANDROID\u DEV=C:\ANDROID\ANDROID-ndk-r11c\platforms\ANDROID-23\arch arm\usr

指南中的以下行导致了问题:
/Configure shared android或android-armv7
,所以我只使用了
/Configure shared android
,因为它似乎不知道android-armv7。但我不确定它是否正确

配置后,我运行
make build_libs
,这会导致与windows样式路径相关的错误:


手动修复perl路径不是什么大问题,但是检查了生成的Makefile之后,我注意到它到处都包含windows路径。有没有办法解决这个问题?

我相信这是一个不受支持的配置。看起来您所遵循的指南是针对Linux的,而不是针对Windows的。您最好的选择可能是安装、设置Ubuntu 16虚拟机,然后在Linux上工作。为了完整起见,
/Configure LIST | egrep'(android | mingw)
为您提供了一些感兴趣的目标。没有一个目标跨越Android和MinGW。好吧,指南中说“如果你的开发平台是Windows,那么你需要msys和PerlV5.14或更高版本来构建OpenSSL。”所以我假设它是针对Windows的。据我所知,mingw只是为了提供类似unix的环境才需要的。哦,你说得对。另外两个嫌疑犯是:(1)MinGW在很久以前就被遗弃了,所以现在它可能不是你最好的平台;(2)说明可能适用于OpenSSL 1.0.1或1.0.2。我仍然认为你应该考虑一个Ubuntu VM来避免明痛点。降级到OpenSSL 1.0.2可能会有所帮助。好的,我会尝试一下。我之所以努力避免使用Ubuntu方法,是因为需要在那里安装所有这些android设备。但也许你是对的,这比在MinGW中工作要容易得多。如果你尝试一下Ubuntu,然后在OpenSSL维基上签出。它将让您了解在使用OpenSSL的构建系统时需要做什么。我不熟悉Qt,所以我不确定程序有多不同。