openssl NDK 交叉编译
生活随笔
收集整理的這篇文章主要介紹了
openssl NDK 交叉编译
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
移植openssl到android
創建工作目錄,并進入
| 12 | mkdir androidcd android |
下載源碼
| 12 | wget https://www.openssl.org/source/openssl-1.1.0e.tar.gztar xfz openssl-1.1.0e.tar.gz |
生成交叉編譯工具鏈
| 1 | $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --arch=arm --install-dir=./toolchain |
導出環境變量(armeabi)
| 1234567891011121314151617 | export ANDROID_HOME=`pwd`export TOOLCHAIN=$ANDROID_HOME/toolchainexport CROSS_SYSROOT=$TOOLCHAIN/sysrootexport PATH=$TOOLCHAIN/bin:$PATHexport TOOL=arm-linux-androideabiexport CC=$TOOLCHAIN/bin/${TOOL}-gccexport CXX=$TOOLCHAIN/bin/${TOOL}-g++export LINK=${CXX}export LD=$TOOLCHAIN/bin/${TOOL}-ldexport AR=$TOOLCHAIN/bin/${TOOL}-arexport RANLIB=$TOOLCHAIN/bin/${TOOL}-ranlibexport STRIP=$TOOLCHAIN/bin/${TOOL}-stripexport ARCH_FLAGS="-mthumb"export ARCH_LINK=export CFLAGS="${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64"export CXXFLAGS="${CFLAGS} -frtti -fexceptions"export LDFLAGS="${ARCH_LINK}" |
編譯并安裝
| 1234567891011 | cd openssl-1.1.0e/./Configure android \--prefix=$TOOLCHAIN/sysroot/usr/local \--with-zlib-include=$TOOLCHAIN/sysroot/usr/include \--with-zlib-lib=$TOOLCHAIN/sysroot/usr/lib \zlib \ no-asm \ no-shared \ no-unit-testmake -j4make install |
卸載
| 1 | make uninstall |
armeabi-v7a
| 12345678910111213 | $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --arch=arm --install-dir=./toolchainexport TOOL=arm-linux-androideabiexport ARCH_FLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"export ARCH_LINK="-march=armv7-a -Wl,--fix-cortex-a8"./Configure android-armv7 \ --prefix=$TOOLCHAIN/sysroot/usr/local \ --with-zlib-include=$TOOLCHAIN/sysroot/usr/include \ --with-zlib-lib=$TOOLCHAIN/sysroot/usr/lib \zlib \no-asm \no-shared \no-unit-test |
x86
| 12345678910111213 | $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --arch=x86 --install-dir=./toolchainexport TOOL=i686-linux-androidexport ARCH_FLAGS="-march=i686 -msse3 -mstackrealign -mfpmath=sse"export ARCH_LINK=""./Configure android-x86 \ --prefix=$TOOLCHAIN/sysroot/usr/local \ --with-zi686lib-include=$TOOLCHAIN/sysroot/usr/include \ --with-zlib-lib=$TOOLCHAIN/sysroot/usr/lib \zlib \no-asm \no-shared \no-unit-test |
何大仙提供的shell腳本
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | if [! -f "openssl-1.1.0e.tar.gz" ]; thenwget https://www.openssl.org/source/openssl-1.1.0e.tar.gzfiif [! -d "openssl-1.1.0e" ]; then tar zxf openssl-1.1.0e.tar.gzfi# envif [-d "out/openssl" ]; thenrm -fr "out/openssl"fimkdir "out"mkdir "out/openssl"_compile() {SURFIX=$1TOOL=$2ARCH_FLAGS=$3ARCH_LINK=$4CFGNAME=$5ARCH=$6 if [! -d "out/openssl/${SURFIX}" ]; thenmkdir "out/openssl/${SURFIX}" fi if [! -d "toolchain_${SURFIX}" ]; then $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --arch=${ARCH} --install-dir=./toolchain_${SURFIX} fi export ANDROID_HOME=`pwd` export TOOLCHAIN=$ANDROID_HOME/toolchain_${SURFIX} export CROSS_SYSROOT=$TOOLCHAIN/sysroot export PATH=$TOOLCHAIN/bin:$PATH export CC=$TOOLCHAIN/bin/${TOOL}-gcc export CXX=$TOOLCHAIN/bin/${TOOL}-g++ export LINK=${CXX} export LD=$TOOLCHAIN/bin/${TOOL}-ld export AR=$TOOLCHAIN/bin/${TOOL}-ar export RANLIB=$TOOLCHAIN/bin/${TOOL}-ranlib export STRIP=$TOOLCHAIN/bin/${TOOL}-strip export ARCH_FLAGS=$ARCH_FLAGS export ARCH_LINK=$ARCH_LINK export CFLAGS="${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64" export CXXFLAGS="${CFLAGS} -frtti -fexceptions" export LDFLAGS="${ARCH_LINK}" cd openssl-1.1.0e/./Configure ${CFGNAME} --prefix=$TOOLCHAIN/sysroot/usr/local --with-zlib-include=$TOOLCHAIN/sysroot/usr/include --with-zlib-lib=$TOOLCHAIN/sysroot/usr/lib zlib no-asm no-shared no-unit-testmake cleanmake -j4 #make installmake install_swmake install_ssldirs cd ..mv openssl-1.1.0e/libssl.a out/openssl/${SURFIX}/ mv openssl-1.1.0e/libcrypto.a out/openssl/${SURFIX}/}# arm_compile "armeabi" "arm-linux-androideabi" "-mthumb" "" "android" "arm"# armv7_compile "armeabi-v7a" "arm-linux-androideabi" "-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16" "-march=armv7-a -Wl,--fix-cortex-a8" "android-armeabi" "arm"# arm64v8_compile "arm64-v8a" "aarch64-linux-android" "" "" "android64-aarch64" "arm64"# x86_compile "x86" "i686-linux-android" "-march=i686 -m32 -msse3 -mstackrealign -mfpmath=sse -mtune=intel" "" "android-x86" "x86"# x86_64_compile "x86_64" "x86_64-linux-android" "-march=x86-64 -m64 -msse4.2 -mpopcnt -mtune=intel" "" "android64" "x86_64"# mips_compile "mips" "mipsel-linux-android" "" "" "android-mips" "mips"# mips64_compile "mips64" "mips64el-linux-android" "" "" "linux64-mips64" "mips64"echo "done" |
總結
以上是生活随笔為你收集整理的openssl NDK 交叉编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libnghttp2 NDK 交叉编译
- 下一篇: CURL NDK 交叉编译