在Android下编译openssl静态库(平台:Windows)

来源:互联网 发布:网络如何交友 编辑:程序博客网 时间:2024/05/17 00:00

1. 在系统上安装Android NDK

1) 什么是NDK?

NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和 java 应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK 集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。比较简单的说,NDK是一套交叉编译工具,它可以帮你把你用C或C++书写的代码,编译为.so(类似与win下的.dll)格式的文件,使你可以在你的Android程序当中用Java语言(JNI)调用这些代码.

2) 下载安装Android NDK

a.到http://developer.android.com/sdk/ndk/index.html下载最新版的WIndows版的NDK.

b.然后解压放置在任何地方都可以,目录最好不要有空格间隔的,但是我违反了,呵呵,我放在了“D:\Program Files\Android\”下面。

c.由于NDK编译代码时需要用到make和gcc,所以必须先搭建一个Linux的环境,cygwin是一个在Windows平台上运行的unix模拟环境,通过它我们可以再不用安装Linux的情况下使用NDK来编译C/C++代码了。

2.下载安装Cygwin            

1) 到http://www.cygwin.com下载setup.exe,安装过程我就不赘述了,很傻瓜式的,是在线下载安装的,不过它会提示你保存安装包得地址,在选择要下载的包得时候,我这里列出需要安装的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc、g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make等包。

注意:安装目录最好不要有空格间隔的目录名,比如Program files. 我安装的目录为D:\Cygwin。

2) 测试一下是否安装成功

运行cygwin,在弹出的命令行窗口输入:

      $ cygcheck -c cygwin

   会打印出当前cygwin的版本和运行状态,如果status的话,则cygwin运行正常。

然后依次输入

      $ gcc --version

      $ g++ --version

      $ gdb --version

    进行测试,如果打印出来版本信息,就说明cygwin安装成功了,并且您选的包都安装正常。

那么我们可以进行下一步了。

3. 配置NDK环境变量

1) 到安装目录D:\Cygwin,这个目录就是根目录,然后打开\home\<user name>.bash_profile,我的用户名是jianke.tang ,一下的user name都用jianke.tang代替,

D:\Cygwin\home\jianke.tang\.bash_profile

2) 打开.bash_profile文件,添加

NDK_PATH=/cygdrive/D/Progra~1/Android/android-ndk-r6b

   export NDK_PATH

注:NDK_PATH是我自己取的名字,NDK_PATH=/cygdrive/<your volume>/<android ndk dir>, 我的androd ndk的目录为"D:\Program Files\Android\android-sdk", 

3) 打开cygwin

$ cd $NDK_PATH

如果提示黄色的字体“/cygdrive/D/Progra~1/Android/android-ndk-r6b”那么恭喜,环境变量设置成功了

4. 用NDK编译一个简单的程序

1)为了保证程序没有问题,我们用自带的例子编译一个简单的程序吧

$ cd $NDK_PATH/samples/hello-jni

$ $NDK_PATH/ndk-build

 执行过程如下所示

     Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup       : libs/armeabi/gdb.setup

Compile thumb  : hello-jni <= hello-jni.c

SharedLibrary  : libhello-jni.so

Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

 如上述代码,它会生成一个libs目录,把编译生成的libhello-jni.so放在里面。

5.编译openSSL

1) 下载guardianproject版的openssl

下载地址:https://github.com/guardianproject/openssl-android

需要把整个工程下载下来

然后解压,我解压并改名成了:project_openssl,位置D:\project_openssl

然后打开Cygwin,

$ cd D:\project_openssl

        $ $NDK_PATH/ndk-build

如果没有出现错误,恭喜你,编译成功了

原创粉丝点击