web-dev-qa-db-ja.com

Androidの最新のOpenSSLをコンパイルする

Android用のOpenSSL1.0.1cの(.so)ファイル用の共有ライブラリを生成しようとしています。 AndroidスクリプトでAndroidをコンパイルするための3つのオプションが追加されていることがわかりました。

./Configure Android-armv7  (or)
./Configure Android-x86    (or)
./Configure Android

oS用に構成してからコンパイルしようとすると、スローエラーが発生します。現在、x86 windows7を使用しており、Cygwin、Android sdk R20、Android NDK r8

sh-4.1$ make
making all in crypto...
make[1]: Entering directory `/cygdrive/d/SourceCodes/OpenSSL/openssl-1.0.1c/crypto'
gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -march=armv7-a -mandroid -I/include -B/lib -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_MONT -DOP
ENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM   -c -o cryptlib.o cryptlib.c
cc1: error: unrecognized command line option "-mandroid"
cryptlib.c:1:0: error: bad value (armv7-a) for -march= switch
<builtin>: recipe for target `cryptlib.o' failed
make[1]: *** [cryptlib.o] Error 1
make[1]: Leaving directory `/cygdrive/d/SourceCodes/OpenSSL/openssl-1.0.1c/crypto'
Makefile:278: recipe for target `build_crypto' failed
make: *** [build_crypto] Error 1
sh-4.1$

誰かが同様の問題に直面し、同じ問題を解決するための解決策を得た場合、私に知らせてください。

23
Suman

OpenSSL 1.0.1eでは、次のことを行うだけです。

CC=~/Android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc ./Configure Android-armv7
Android_DEV=~/Android-ndk-r9//platforms/Android-8/Arch-arm/usr make build_libs
15
James Moore

ここに投稿された指示とその他の追加のおかげで、Androidをサポートする最新のOpenSSLライブラリをコンパイルする自動スクリプトを作成しました:armeabi、armeabi-v7a、x86、x86_64およびarm64-v8a:

#!/bin/bash -e
#@author Aleksandar Gotev ([email protected])
#Hints and code taken also from http://stackoverflow.com/questions/11929773/compiling-the-latest-openssl-for-Android

if [ "$#" -ne 6 ]
then
    echo "Usage:"
    echo "./openssl-build <Android_NDK_PATH> <OPENSSL_SOURCES_PATH> <Android_TARGET_API> \\"
    echo "                <Android_TARGET_ABI> <GCC_VERSION> <OUTPUT_PATH>"
    echo
    echo "Supported target ABIs: armeabi, armeabi-v7a, x86, x86_64, arm64-v8a"
    echo
    echo "Example using GCC 4.8, NDK 10e, OpenSSL 1.0.2d and Android API 21 for armeabi-v7a."
    echo "./openssl-build /home/user/Android-ndk-r10e \\"
    echo "                /home/user/openssl-1.0.2d \\"
    echo "                21 \\"
    echo "                armeabi-v7a \\"
    echo "                4.8 \\"
    echo "                /home/user/output/armeabi-v7a"
    exit 1
fi

NDK_DIR=$1
OPENSSL_BASE_FOLDER=$2
OPENSSL_TARGET_API=$3
OPENSSL_TARGET_ABI=$4
OPENSSL_GCC_VERSION=$5
OPENSSL_OUTPUT_PATH=$6

NDK_MAKE_TOOLCHAIN="$NDK_DIR/build/tools/make-standalone-toolchain.sh"
OPENSSL_TMP_FOLDER="/tmp/openssl"
rm -rf "$OPENSSL_TMP_FOLDER"
mkdir -p "$OPENSSL_TMP_FOLDER"
cp -r ${OPENSSL_BASE_FOLDER} ${OPENSSL_TMP_FOLDER}

function build_library {
    mkdir -p ${OPENSSL_OUTPUT_PATH}
    export PATH=$TOOLCHAIN_PATH:$PATH
    make && make install
    rm -rf ${OPENSSL_TMP_FOLDER}
    echo "Build completed! Check output libraries in ${OPENSSL_OUTPUT_PATH}"
}

if [ "$OPENSSL_TARGET_ABI" == "armeabi-v7a" ]
then
    ${NDK_MAKE_TOOLCHAIN} --platform=Android-${OPENSSL_TARGET_API} \
                          --toolchain=arm-linux-androideabi-${OPENSSL_GCC_VERSION} \
                          --install-dir="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm"
    export TOOLCHAIN_PATH="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm/bin"
    export TOOL=arm-linux-androideabi
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
    export CC=$NDK_TOOLCHAIN_BASENAME-gcc
    export CXX=$NDK_TOOLCHAIN_BASENAME-g++
    export LINK=${CXX}
    export LD=$NDK_TOOLCHAIN_BASENAME-ld
    export AR=$NDK_TOOLCHAIN_BASENAME-ar
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
    export Arch_FLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
    export Arch_LINK="-march=armv7-a -Wl,--fix-cortex-a8"
    export CPPFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export CXXFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
    export CFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export LDFLAGS=" ${Arch_LINK} "
    cd ${OPENSSL_TMP_FOLDER}
    ./Configure Android-armv7 --openssldir=${OPENSSL_OUTPUT_PATH}
    build_library

Elif [ "$OPENSSL_TARGET_ABI" == "arm64-v8a" ]
then
    ${NDK_MAKE_TOOLCHAIN} --platform=Android-${OPENSSL_TARGET_API} \
                          --toolchain=aarch64-linux-Android-4.9 \
                          --install-dir="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm64"
    export TOOLCHAIN_PATH="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm64/bin"
    export TOOL=aarch64-linux-Android
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
    export CC=$NDK_TOOLCHAIN_BASENAME-gcc
    export CXX=$NDK_TOOLCHAIN_BASENAME-g++
    export LINK=${CXX}
    export LD=$NDK_TOOLCHAIN_BASENAME-ld
    export AR=$NDK_TOOLCHAIN_BASENAME-ar
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
    export Arch_FLAGS=
    export Arch_LINK=
    export CPPFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export CXXFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
    export CFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export LDFLAGS=" ${Arch_LINK} "
    cd ${OPENSSL_TMP_FOLDER}
    ./Configure Android --openssldir=${OPENSSL_OUTPUT_PATH}
    build_library

Elif [ "$OPENSSL_TARGET_ABI" == "armeabi" ]
then
    ${NDK_MAKE_TOOLCHAIN} --platform=Android-${OPENSSL_TARGET_API} \
                          --toolchain=arm-linux-androideabi-${OPENSSL_GCC_VERSION} \
                          --install-dir="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm"
    export TOOLCHAIN_PATH="${OPENSSL_TMP_FOLDER}/Android-toolchain-arm/bin"
    export TOOL=arm-linux-androideabi
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
    export CC=$NDK_TOOLCHAIN_BASENAME-gcc
    export CXX=$NDK_TOOLCHAIN_BASENAME-g++
    export LINK=${CXX}
    export LD=$NDK_TOOLCHAIN_BASENAME-ld
    export AR=$NDK_TOOLCHAIN_BASENAME-ar
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
    export Arch_FLAGS="-mthumb"
    export Arch_LINK=
    export CPPFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export CXXFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
    export CFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export LDFLAGS=" ${Arch_LINK} "
    cd ${OPENSSL_TMP_FOLDER}
    ./Configure Android --openssldir=${OPENSSL_OUTPUT_PATH}
    build_library

Elif [ "$OPENSSL_TARGET_ABI" == "x86" ]
then
    ${NDK_MAKE_TOOLCHAIN} --platform=Android-${OPENSSL_TARGET_API} \
                          --toolchain=x86-${OPENSSL_GCC_VERSION} \
                          --install-dir="${OPENSSL_TMP_FOLDER}/Android-toolchain-x86"
    export TOOLCHAIN_PATH="${OPENSSL_TMP_FOLDER}/Android-toolchain-x86/bin"
    export TOOL=i686-linux-Android
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
    export CC=$NDK_TOOLCHAIN_BASENAME-gcc
    export CXX=$NDK_TOOLCHAIN_BASENAME-g++
    export LINK=${CXX}
    export LD=$NDK_TOOLCHAIN_BASENAME-ld
    export AR=$NDK_TOOLCHAIN_BASENAME-ar
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
    export Arch_FLAGS="-march=i686 -msse3 -mstackrealign -mfpmath=sse"
    export Arch_LINK=
    export CPPFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export CXXFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
    export CFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export LDFLAGS=" ${Arch_LINK} "
    cd ${OPENSSL_TMP_FOLDER}
    ./Configure Android-x86 --openssldir=${OPENSSL_OUTPUT_PATH}
    build_library

Elif [ "$OPENSSL_TARGET_ABI" == "x86_64" ]
then
    ${NDK_MAKE_TOOLCHAIN} --platform=Android-${OPENSSL_TARGET_API} \
                          --toolchain=x86_64-4.9 \
                          --install-dir="${OPENSSL_TMP_FOLDER}/Android-toolchain-x86_64"
    export TOOLCHAIN_PATH="${OPENSSL_TMP_FOLDER}/Android-toolchain-x86_64/bin"
    export TOOL=x86_64-linux-Android
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
    export CC=$NDK_TOOLCHAIN_BASENAME-gcc
    export CXX=$NDK_TOOLCHAIN_BASENAME-g++
    export LINK=${CXX}
    export LD=$NDK_TOOLCHAIN_BASENAME-ld
    export AR=$NDK_TOOLCHAIN_BASENAME-ar
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
    export CPPFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export CXXFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
    export CFLAGS=" ${Arch_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
    export LDFLAGS=" ${Arch_LINK} "
    cd ${OPENSSL_TMP_FOLDER}
    ./Configure linux-x86_64 --openssldir=${OPENSSL_OUTPUT_PATH}
    build_library

else
    echo "Unsupported target ABI: $OPENSSL_TARGET_ABI"
    exit 1
fi

スクリプトドキュメント: https://github.com/alexbbb/pjsip-Android-builder#build-only-openssl

最終バージョンのチェック: https://github.com/alexbbb/pjsip-Android-builder/blob/master/openssl-build

8
Alex Gotev

Androidで動作するOpenSSLのビルド環境に役立つアドバイスをここにまとめました。

  • 複数のアーキテクチャのビルドをサポート-ARM、ARMv7、X86
  • OpenSSLソースコードを使用
  • Android.mkビルドと統合
  • 事前にコンパイルされたOpenSSL 1.0.2hが含まれています(独自のコンパイルまたはコンパイルを行う場合に使用)

https://github.com/ph4r05/Android-openssl

3
ph4r05

ネイティブライブラリの1つで脆弱なバージョンのOpenSSL(< 1.0.2f/1.0.1r)を使用する問題に誰かが遭遇した場合、詳細と指示を追加します。

前提条件:Android NDKを最初に設定する必要があります。

  1. まず、OpenSSL互換バージョン(> 1.0.2f/1.0.1r)をダウンロードします。
  2. このリンク から2つのスクリプトをダウンロードします。誰かが彼らが何をするのか疑問に思う場合(そしてあなたがすべき-暗号化ライブラリです!!!):彼らはAndroid ABIプロセッサアーキテクチャ(OpenSSLx86)ごとにarmeabiライブラリを構築します、mipsなど...)

  3. Setenv-Android-mod.sh-> line 18をndkバージョンに変更します

  4. Setenv-Android-mod.sh-> line 40をAndroid APIバージョン

  5. Build-all-Arch.sh-> line 7OpenSSLライブラリーのフォルダー名で変更します(私の場合はopenssl-1.0.1tでした)

  6. ビルドが成功すると、フォルダーdist内にライブラリーが存在します

openSSLをビルド済みの静的ライブラリとしてプロジェクトに追加するには、次を作成します。

  1. lib/(サポートされるアーキテクチャの.aファイルを含む)を含むopensslディレクトリの下のjniフォルダー、
  2. include/には必要なインクルードがあります(ダウンロードしたopensslバージョンでは、ヘッダーファイルの一部がシンボリックリンクであることに注意してください)
  3. 以下を追加して、jniフォルダー内のAndroid.mkを変更します。

    include $(CLEAR_VARS) 
    LOCAL_MODULE := libssl
    LOCAL_SRC_FILES := lib/$(TARGET_Arch_ABI)/libssl.a
    include $(PREBUILT_STATIC_LIBRARY)
    include $(CLEAR_VARS)
    LOCAL_MODULE := libcrypto
    LOCAL_SRC_FILES := lib/$(TARGET_Arch_ABI)/libcrypto.a
    include $(PREBUILT_STATIC_LIBRARY)
    

次に、別のjniモジュール内でライブラリを使用するには、Android.mkファイルに次を追加します。

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openssl/include
LOCAL_STATIC_LIBRARIES := libssl libcrypto
1
R. Zagórski

CygwinとAndroid NDKを使用してWindowsでOpenSSLをビルドする方法は次のとおりです。

  1. OpenSSLソースをダウンロードして抽出する
  2. スクリプトを https://github.com/pstanoev/OpenSSL-For-Android からダウンロードします
  3. 管理者ユーザーでcmdを実行し、実行します

    SET CYGWIN=winsymlinks:nativestrict

  4. 同じcmdウィンドウで、Cygwinを開きます。

    cygwin.bat

  5. スクリプトを実行可能にする:

    chmod +x *.sh

  6. Cygwinで次を実行します。

    /cygdrive/c/dev/openssl-source/openssl-build.sh /cygdrive/c/dev/Android-ndk-r12b /cygdrive/c/dev/openssl-source/openssl-1.0.2j 15 armeabi-v7a 4.9 /home/user/openssl

    • Android NDKとソースの場所を変更します
  7. Libcrypto.soとinclude/*ファイルをこのモジュールにコピーします。使用する cp -rリンクをたどるコピー用。

0
peceps

このスクリプト を使用して、Windows 7 + Cygwinでopensslをコンパイルできます。必要なのは、ndkの場所を変更して、Android api version。

私の方法ステップバイステップ(Win 7 x64 + Cygwin + ndk r10c)

  1. ファイルsetenv-Android-mod.shおよびbuild-all-Arch.shをopensslディレクトリにコピーします。

  2. ファイルの変更build-all-Arch.sh

    • cd openssl-1.0.1jから#cd openssl-1.0.1j(56行目)

    • cd ..から#cd ..へ(行80)

  3. ファイルの変更setend-Android-mod.sh

    • _Android_NDK="Android-ndk-r10c-x64" ndkバージョンへの変更(18行目)
    • _Android_API="Android-19" AP​​Iバージョンへの変更(行40)
    • Android_NDK_ROOT="d:/work/Android/android-ndk-r10c-x64" dirを指定します(42行目)
    • Android_TOOLCHAIN="d:/work/Android/android-ndk-r10c-x64/toolchains" dirを指定します(43行目)
    • export CROSS_COMPILE="aarch64-linux-Android-"からexport CROSS_COMPILE="$Android_TOOLCHAIN/aarch64-linux-Android-"(219行目)、同じ行225、231、237、243を変更します-$Android_TOOLCHAIN/をクロスコンパイルパスに追加します。

build-all-Arch.shを実行します。

すべてのライブラリ(*.so)は/prebuilt/ dirに配置されます。

追伸間違ったシンボリックリンクが原因でエラーがいくつかありましたが、次のコマンドを実行した後はすべて問題ありませんでしたexport CYGWIN="winsymlinks:native"詳細は here を参照してください。

0
vadim_hr

この問題と他の多くの問題により、1週間ほどいじくり回されましたが、最終的に問題を解決したので、解決策を共有したいと思いました。 OpenSSLは21+用にコンパイルでき、コードをハッキングしたい場合はAndroid 4.03デバイスで動作します。libcurlを使用しているため、最新である必要があります。手順は少し複雑です:

まず、ビルド可能なバージョンのlibcurlがあることを確認してください。良い出発点としてお勧めします https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src

それらは最新のビルドスクリプトを保持します。

まず、「ビルド」でAndroid.iniをバージョン21にハックします

次に、次のスタブ関数をjniプロジェクトのどこかに追加する必要がありました。

// SPECIAL API 21+ functions required for Android to build on newer platform targets.

float strtof (const char* str, char** endptr)
{
    return (float)strtod(str, endptr);
}

int __isnanf(float x)
{
    return (x != x);
}

double atof (const char* s)
{
    double rez = 0, fact = 1;
    if (*s == '-'){
        s++;
        fact = -1;
    };
    for (int point_seen = 0; *s; s++){
        if (*s == '.'){
            point_seen = 1;
            continue;
        };
        int d = *s - '0';
        if (d >= 0 && d <= 9){
            if (point_seen) fact /= 10.0f;
            rez = rez * 10.0f + (float)d;
        };
    };
    return rez * fact;
}

void srandom(unsigned int seed)
{
    std::srand(seed);
}

static unsigned long _next = 1;

void srand(unsigned int seed)
{
    _next = seed;
}

long random()
{
    return Rand();
}

int Rand()
{
    _next = _next * 1103515245 + 12345;
    return (unsigned int)(_next/65536) % 32768;
}

/* the default is bsd */
__sighandler_t signal(int s, __sighandler_t f)
{
    return 0;
}

シグナル関数はもっと良いかもしれませんが、私たちにとっては重要ではありません。これは、5 +(- https://groups.google.com/forum/#!topic/Android-ndk/RjO9WmG9pfE のヘッダーの変更によって引き起こされる4.03デバイスでの恐ろしい「シンボルを見つけられない」エラーを停止します。 =)。

次に、ビルドするopensslのバージョンのtar.gzをダウンロードし、どこかで解凍します。 crypto/ui/ui_openssl.cおよびcrypto/des/read_pwd.cを編集し、tcsetattrの#definesが使用されていないことを確認します。私はブルートフォース#if 0と#if 1を使用しました-これはプリプロセッサをいじることで可能になるはずですが、この時点でpointめました。誰かが正しい魔法を共有したいと思うなら、してください!

ここで、ファイルをtarballファイルに再tarする必要があります(そこにルートフォルダーを取得することを確認してください:

実行します(私の場合)

shasum -a 512 curl-7.50.0.tar.gz> ../src/curl/SHA512SUMS

これにより、cocos2d ./build.shが実行できるようになります。何かのようなもの:

./build.sh -p = Android --libs = openssl、curl --Arch = armv7 --mode = release

最後に-そして、これは普遍的な.aファイルを作成するという点で私を見つけましたが、直接質問の一部ではありません。NEON命令を使用しないバージョンを使用するようにしてください。 Tegra 2デバイスには明らかにFPUがありますが、NEONはありません。これはコンパイラフラグとして-mfpu = vfpを使用して実行できると思いますが、この領域ではパフォーマンスがあまり重要ではないので、代わりにarmv5ビルドを使用することを選択しました既に)。

最終的には、どこでも動作し、最新かつ最高のAndroidを対象とするプロジェクトで使用できるNice .aを取得する必要があります。 OpenSSLプロジェクトの誰かだけがこれを読み、プロジェクトを修正して、Android 2年前にリリースされたものを理解できるように!

幸運を!

0
Alexp

これで問題は解決しませんが、おそらく役立つでしょう。 Googleグループは、Android向けのOpenSSL 1.0.1 beta2を正常にコンパイルした場所に投稿します。

https://groups.google.com/forum/?fromgroups#!topic/Android-security-discuss/5-_gCAmEo-M

これは、Android用に1.0.0aをビルドするオープンソースプロジェクトにも役立つ場合があります。

https://github.com/eighthave/openssl-Android

0
Cristy

これは私がopenssl-1.0.2gのためにそれをした方法です:

$ rm -rf openssl-1.0.2g/
$ tar xzf openssl-1.0.2g.tar.gz
$ chmod a+x setenv-Android.sh
$ . ./setenv-Android.sh ---> Note: make sure in the same folder of your openssl-1.0.2g
$ cd openssl-1.0.2g/

$ Perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org

$ ./config shared no-ssl2 no-ssl3 no-comp no-hw no-engine --openssldir=<Path of your OpenSSL> 

$ make depend
$ make clean
$ make all
before make install, ---Delete the "include" folder (path/of/your/openssl-1.0.2g/include)  or you may move it to another directory for safe keeping. 
$ make install 

Setenv-Android.shに正しいNDKパスを入力してください。そうしないと、エラーが発生します。

使用したこのビルドの例Android NDK vr10b( http://dl.google.com/Android/ndk/Android-ndk32-r10b-darwin-x86.tar.bz2 )そして、setenv-Android.shファイル内でffパス値を使用しました:

_Android_NDK="Android-ndk-r10b" (Line 12)
_Android_EABI="arm-linux-androideabi-4.8"(Line 16)
_Android_API="Android-19"(Line 24)

リファレンス: https://wiki.openssl.org/index.php/Android

注--->この質問に答えるためにgithubコミットを作成しました: https://github.com/rjmangubat23/ OpenSSL

Setenv-Android.shのさまざまなスクリプトをgithubにアップロードしました。アーキテクチャごとに異なるタイプのスクリプトが必要になるためです。

X86の場合: https://github.com/rjmangubat23/OpenSSL/tree/master/x86

ArmV7の場合: https://github.com/rjmangubat23/OpenSSL/tree/master/ArmV7

ここからOpensslをダウンロードしてください: ftp://ftp.openssl.org/source

Android NDKファイルの完全なリストはこちら: https://github.com/taka-no-me/Android-cmake/blob/master/ndk_links.md

0
mangu23