NDK+OpenSSl,通过JNI技术开发so加密库

以下是个人在做加密算法库时一些经验总结,今天把它写下来分享给大家,希望对大家以后再做类似的开发工作时能有所帮助,少走些弯路。

主要从以下5个方面进行阐述:

1. Openssl安装,1.0.11.0.2使用时的区别

2. Linuxgcc的使用方法,及可能遇到的问题

3. JNI开发,开发流程

4. NDK使用方法,以及打包so库时如何编写Application.mk文件

5.IOS打包基于openssl库的静态库时需注意那些


一. Openssl安装,1.0.11.0.2使用时的区别

参考网上的教程:

① openssl官网下载opensslopenssl-1.0.1e.tar.gz

② 使用tar命令将其解压到/usr/local/src

③ Cd进入openssl-1.0.1e目录下,执行

 ./config  --prefix=/usr/local --openssldir=/usr/local/ssl

make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install

以上方法是我从网上copy下来的,若自己的机器上没有openssl,可以参考安装。

查看自己机器上是否已经安装openssl的方法,执行openssl  version,若有版本信息则已安装,否则未安装。

在使用Openssl库开发时,需要注意1.0.11.0.2中有些方法的参数是不同的。例如1.0.1bio.h中有个方法BIO *BIO_new_mem_buf(void *buf, int len),而其在1.0.2中则是BIO *BIO_new_mem_buf(const void *buf, int len)。所以在打包时要注意,开发环境和打包环境中的库是不是同一个版本,若不是需要在调用某些方法时稍作改动,一般使用指针类型强转下就可以解决。

二. Linuxgcc的使用方法,及可能遇到的问题

gcc主要是用来编译.c文件,编译.cpp文件可以使用g++。先介绍下一般会用到的几个命令参数:

-o指定输出文件名

-c只编译不连接

-g产生供gdb调试用的可执行文件

-l链接库,后跟库名,linux下的库名一般是lib+库名+.so形式

-L指定连接库路径

-I指定include文件路径

-fPIC在编译阶段使用,告诉编译器产生与位置无关代码,一般在编译动态共享库用到。

-shared设置共享,一般是在编译动态共享库时会用到。

用例:hello.c

编译成可执行文件:gcc  hello.c  –o  main,这要求hello.c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值