之前项目中有使用C语言实现一些功能通过Android NDK的方式编译成so库调用,现在想将此功能移植到Linux服务端,经过研究了一下,Linux下使用JNI和Android端的NDK还是存在一些差异(详见:Linux JNI 开发 与 Android NDK 开发 差异-CSDN博客),以下对Linux下编译JNI的so库和Java调用so库的过程和踩到的一些坑记录一下。
一、环境安装
本身使用的Linux版本是Ubuntu 14.04 虚拟机,使用的JDK版本是openjdk 8,在Ubuntu 14.04安装openjdk 8时,由于一些原因,可能你配置的镜像源中找不到该工具,以下是我配置的源和操作步骤:
先对系统镜像源进行修改:
sudo gedit /etc/apt/sources.list
修改成阿里源如下:
deb <http://mirrors.aliyun.com/ubuntu/> trusty main restricted universe multiverse
deb <http://mirrors.aliyun.com/ubuntu/> trusty-security main restricted universe multiverse
deb <http://mirrors.aliyun.com/ubuntu/> trusty-updates main restricted universe multiverse
deb <http://mirrors.aliyun.com/ubuntu/>