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
    评论
你可以按照以下步骤在Windows编译Crypto++: 1. 下载Crypto++源代码。你可以从官网(https://www.cryptopp.com/)或Github(https://github.com/weidai11/cryptopp)上下载最新版本的源代码。 2. 解压源代码压缩包到一个目录中。 3. 打开Visual Studio,创建一个新的空项目。 4. 将Crypto++源代码目录中的“cryptlib.h”和“config.h”文件添加到你的项目中。 5. 在Visual Studio中打开项目属性,选择“C/C++” -> “常规” -> “附加包含目录”,将Crypto++源代码目录添加到附加包含目录中。 6. 在项目中添加你要编译Crypto++源代码文件,例如AES加密的源代码文件“aes.cpp”和“rijndael.cpp”。 7. 在Visual Studio中打开“属性管理器”,选择“Microsoft.Cpp.Win32.user”属性表(如果你的项目是32位的)或“Microsoft.Cpp.x64.user”属性表(如果你的项目是64位的)。 8. 在“属性管理器”中选择“VC++目录” -> “包含目录”,添加Crypto++源代码目录。 9. 在“属性管理器”中选择“VC++目录” -> “库目录”,添加Crypto++源代码目录中的“Win32”(如果你的项目是32位的)或“x64”(如果你的项目是64位的)目录。 10. 在Visual Studio中打开“属性页”,选择“链接器” -> “输入”,添加“cryptlib.lib”到附加依赖项中。 11. 点击“生成” -> “生成解决方案”开始编译。 完成上述步骤后,你就可以在Windows上使用Visual Studio编译Crypto++库了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值