我真的不建议在官方OpenSSL网站之外抓住任何东西.在处理加密和安全性时,不能冒险.

我唯一遇到的问题是你使用的是主机的gcc,而不是使用Android的交叉编译器.

这是我如何在Ubuntu 14.04LTS上编译官方OpenSSL(这与OpenSSL 1.0.1g配合使用)

从您的主文件夹,运行以下命令:

tar xzvf ~/Downloads/openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

export NDK=~/android-ndk-r9d

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.6 --install-dir=`pwd`/android-toolchain-arm

export TOOLCHAIN_PATH=`pwd`/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} "

然后运行您的配置脚本:

./Configure android-armv7

然后建立

PATH=$TOOLCHAIN_PATH:$PATH make

你应该看到它正在使用arm-linux-androideabi-gcc而不是gcc

为旧的armeabi建立:

tar xzvf ~/Downloads/openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

export NDK=~/android-ndk-r9d

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.6 --install-dir=`pwd`/android-toolchain-arm

export TOOLCHAIN_PATH=`pwd`/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} "

./Configure android

make clean

PATH=$TOOLCHAIN_PATH:$PATH make

构建x86:

tar xzvf ~/Downloads/openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

export NDK=~/android-ndk-r9d

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=x86-4.6 --install-dir=`pwd`/android-toolchain-x86

export TOOLCHAIN_PATH=`pwd`/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} "

./Configure android-x86

make clean

PATH=$TOOLCHAIN_PATH:$PATH make

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐