本文旨在介绍Java程序如何通过JNA调用Linux下的so库文件。对库文件的调用,也是Java编程者会经常遇到的问题。本文就以自身经验为基础,做一个简单的介绍。
相关工具:
Eclipse开发工具,供编写测试程序。
Linux虚拟机,供测试使用。
Visual Studio 2010,供编写C程序。
首先编写一个简单的C程序,为编译为库文件提供原材料。
将测试程序test.c编译为库文件。
#gcc -fpic -c test.c
#gcc -shared -o libtest.so test.o
注意:编译之前必须安装GCC。若没有安装可以通过在线安装的方式进行安装,yum install gcc。
开始编写测试程序,调用动态库。
编译测试程序为.class文件,供运行时调用。
上传java文件、jna.jar到服务器,进行编译。
#export CLASSPATH=$CLASSPATH:./jna.jar
#/usr/local/jdk1.8.0_60/bin/javac TestSo.java
执行测试程序,查看运行结果。
#/usr/local/jdk1.8.0_60/bin/java TestSo
需要注意的一个问题是so库文件的存放位置,本文是将其有测试程序放在一个目录下。若不放在一个目录下,可能会出现库文件找不到的情况。此时就需要通过设置LD_LIBRARY_PATH,来指定库文件的位置。