我按照此处的链接为openssl构建Android库:
http://wiki.openssl.org/index.php/Android
以下是我在Setenv-Android.sh中的设置:
_ANDROID_EABI="arm-linux-androideabi-4.6"
_ANDROID_ARCH=arch-arm
_ANDROID_API="android-16"
下一步是运行以下命令:
$ . ./Setenv-Andrhoid.sh
以下是我遇到的错误:
Error: FIPS_SIG does not specify incore module. Please edit this script.
没有提及如何在wiki中配置FIPS_SIG。看起来该脚本正在寻找名为" incore的文件或目录。"我搜索了我的$ ANDROID_NDK_ROOT。但是,我没有任何" incore"文件。
我需要运行的下一个命令如下:
$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine \
--openssldir=/usr/local/ssl/$ANDROID_API
这里,openssldir
是否指向绝对/usr/...
目录?我希望最终的头文件和lib文件最终在$ANDROID_NDK_ROOT/platform/android-16/arch-arm
目录中。
答案 0 :(得分:6)
Here is the error I am getting: Error: FIPS_SIG does not specify incore module. Please edit this script.
哦,你是对的。这已在维基上修复。
我认为脚本中有一条关于“如果......可以安全忽略”的评论,但似乎也没有评论。叹息....
相同的脚本用于构建OpenSSL库的FIPS Capable和非FIPS版本。忽略FIPS_SIG错误是安全的,如果你 构建FIPS Capable库。
由于您使用的是OpenSSL and Android,因此可以放心使用。 如果您关注FIPS Library and Android,那么 可能会被忽略。
看起来该脚本正在寻找名为“incore”的文件或目录。
为了完整性,incore
是一个将HMAC指纹嵌入程序或共享对象的脚本。 FIPS对象模块将使用嵌入式HMAC在启动时对其自身进行完整性测试。它在实践中毫无用处,因为密钥是众所周知的;)
incore
与openssl-fips-2.0.7.tar.gz
和朋友分发。将incore
放在某处(目录树或例如/usr/local/ssl/android-18/bin
)后,将FIPS_SIG
设置为文件名。
$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine --openssldir =的/ usr /本地/ SSL / $ ANDROID_API
这里,openssldir是指向绝对的/ usr / ...目录吗?我希望最终的header和lib文件最终出现在$ ANDROID_NDK_ROOT / platform / android-16 / arch-arm目录中。
--openssldir
是安装目录。如果您希望安装库,则应将其设置为$ANDROID_NDK_ROOT/platform/android-16/arch-arm
。
更多信息:默认情况下,OpenSSL将自己安装在/usr/local/ssl
。当我构建iOS时,使用--openssldir=/usr/local/ssl/ios
。当我构建Android时,--openssldir=/usr/local/ssl/android-18
(或android-14
等)。
例如,这是我在Mac Book上看起来的样子:
$ ls /usr/local/ssl/
android-14 darwin macosx-x64
android-18 ios macosx-x86