crypto++在windows平台上进行android编译

crypto++在windows平台上进行android编译

欢迎转载和引用
若有问题请联系请联系
Email : lihn1011@163.com
QQ:2279557541


前言

crypto++原生就支持android编译,但是我看着都是在linux平台的编译方式,在windows下,我用的cygwin进行编译的时候,一直报错,找资料也没有,于是自己摸索了一下,下面就记录下。

环境

  • cygwin装了develop包,别的没装
  • crypto版本8.2.0
  • ndk版本r15c(为何不用最新的r19?因为最新的ndk已经移除了gcc,要移植的地方最多,所以我使用了最后一个支持gcc的版本,crypto后面官方会增加对clang的支持,但是现在还木有。。。)

步骤

1、修改配置文件(setenv-android-gcc.sh)中NDK的位置

ANDROID_NDK_ROOT=D:/AndroidNdk/android-ndk-r15c

后面的路径根据自己的需要修改

2、修改配置文件(setenv-android-gcc.sh)增加对windows的支持,大概在210行的位置

for host in "linux-x86_64" "darwin-x86_64" "linux-x86" "darwin-x86"

改为

for host in "linux-x86_64" "darwin-x86_64" "linux-x86" "darwin-x86" "windows-x86_64"

3、设置环境变量,将编译器的目录加入到path中,于是在cygwin中运行

export PATH=/cygdrive/d/AndroidNdk/android-ndk-r15c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin:$PATH

具体的路径更具自己ndk的安装位置进行设置

4、运行环境配置文件

source ./setenv-android-gcc.sh  armeabi-v7a

输出参考结果为

$ source ./setenv-android-gcc.sh  armeabi-v7a
ANDROID_NDK_ROOT: D:/AndroidNdk/android-ndk-r15c
AOSP_TOOLCHAIN_PATH: D:/AndroidNdk/android-ndk-r15c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin
AOSP_ABI: armeabi-v7a
AOSP_API: android-21
AOSP_SYSROOT: D:/AndroidNdk/android-ndk-r15c/sysroot
AOSP_LD_SYSROOT: D:/AndroidNdk/android-ndk-r15c/platforms/android-21/arch-arm
AOSP_FLAGS: -D__ANDROID_API__=21 -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -DCRYPTOPP_DISABLE_ASM -Wl,--fix-cortex-a8 -funwind-tables -fexceptions -frtti
AOSP_SYS_ARCH_INC: D:/AndroidNdk/android-ndk-r15c/sysroot/usr/include/arm-linux-androideabi
AOSP_STL_INC: D:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/include
AOSP_STL_LIB: D:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_shared.so
AOSP_BITS_INC: D:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include
CPU FEATURES: cpu-features.h and cpu-features.c are present

*******************************************************************************
You are using GNU's runtime and STL library. Please ensure the resulting
binary meets licensing requirements. If you can't use GNU's runtime
and STL library, then reconfigure with stlport or llvm. Also see
http://code.google.com/p/android/issues/detail?id=216331
*******************************************************************************

*******************************************************************************
It looks the the environment is set correctly. Your next step is build
the library with 'make -f GNUmakefile-cross'. You can create a versioned
shared object using 'HAS_SOLIB_VERSION=1 make -f GNUmakefile-cross'
*******************************************************************************

5、开始编译

 make -f GNUmakefile-cross

参考输出如下

 make -f GNUmakefile-cross
Here's what we found... IS_X86: 0, IS_X64: 0, IS_ARM32: 1, IS_ARMV8: 0

arm-linux-androideabi-g++ -DNDEBUG -g2 -O3 -fPIC -pipe -Wall -D__ANDROID_API__=21 -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -DCRYPTOPP_DISABLE_ASM -Wl,--fix-cortex-a8 -funwind-tables -fexceptions -frtti -DANDROID --sysroot=D:/AndroidNdk/android-ndk-r15c/sysroot -Wa,--noexecstack -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/include -ID:/AndroidNdk/android-ndk-r15c/sysroot/usr/include/arm-linux-androideabi -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -c cryptlib.cpp
arm-linux-androideabi-g++ -DNDEBUG -g2 -O3 -fPIC -pipe -Wall -D__ANDROID_API__=21 -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -DCRYPTOPP_DISABLE_ASM -Wl,--fix-cortex-a8 -funwind-tables -fexceptions -frtti -DANDROID --sysroot=D:/AndroidNdk/android-ndk-r15c/sysroot -Wa,--noexecstack -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/include -ID:/AndroidNdk/android-ndk-r15c/sysroot/usr/include/arm-linux-androideabi -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -c cpu.cpp
arm-linux-androideabi-g++ -DNDEBUG -g2 -O3 -fPIC -pipe -Wall -D__ANDROID_API__=21 -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -DCRYPTOPP_DISABLE_ASM -Wl,--fix-cortex-a8 -funwind-tables -fexceptions -frtti -DANDROID --sysroot=D:/AndroidNdk/android-ndk-r15c/sysroot -Wa,--noexecstack -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/include -ID:/AndroidNdk/android-ndk-r15c/sysroot/usr/include/arm-linux-androideabi -ID:/AndroidNdk/android-ndk-r15c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -c integer.cpp

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值