当前位置: 技术问答>linux和unix
linux 系统中用java 采用jna 怎么调用c中的动态链接库
来源: 互联网 发布时间:2017-01-17
本文导语: 原来我的项目部署在win系统下面,c的动态链接库为.dll的文件,我用jna调用实现了. 现在项目要部署到linux系统下面,那么java 怎么修改去调用动态链接库呢? 我看到厂家设备在linux系统下提供如下文件: libr...
原来我的项目部署在win系统下面,c的动态链接库为.dll的文件,我用jna调用实现了.
现在项目要部署到linux系统下面,那么java 怎么修改去调用动态链接库呢?
我看到厂家设备在linux系统下提供如下文件:
librf.a是动态库,librf.h是头文件,librf.o,librf.so ,不是原来再win下调用的什么.dll文件放到system32下就行了.
下面厂家设备提供的readme.txt
libcpu.a是静态库,librf.a是动态库,librf.h是头文件,RfDemo_linux.c是测试的例子。
静态库的编译方法:cc RfDemo_linux.c librf.a -o RfDemo 就可以生成RfDemo.o
动态库的编译方法:首先要把库librf.so拷贝到一个系统目录,比如说/lib,然后执行ldconfig
#cp librf.so /lib/librf.so
#ldconfig
这样命令执行后就共享了动态库,下面执行编译命令:
#cc -o RfDemo RfDemo_linux.c /lib/librf.so
执行例子:./RfDemo.o
求java 代码写法 和 这些文件 我该 放到linux系统下面那?
现在项目要部署到linux系统下面,那么java 怎么修改去调用动态链接库呢?
我看到厂家设备在linux系统下提供如下文件:
librf.a是动态库,librf.h是头文件,librf.o,librf.so ,不是原来再win下调用的什么.dll文件放到system32下就行了.
下面厂家设备提供的readme.txt
libcpu.a是静态库,librf.a是动态库,librf.h是头文件,RfDemo_linux.c是测试的例子。
静态库的编译方法:cc RfDemo_linux.c librf.a -o RfDemo 就可以生成RfDemo.o
动态库的编译方法:首先要把库librf.so拷贝到一个系统目录,比如说/lib,然后执行ldconfig
#cp librf.so /lib/librf.so
#ldconfig
这样命令执行后就共享了动态库,下面执行编译命令:
#cc -o RfDemo RfDemo_linux.c /lib/librf.so
执行例子:./RfDemo.o
求java 代码写法 和 这些文件 我该 放到linux系统下面那?
|
看了一下 JNA 的介绍,应该支持调用的
动态库 .so 文件放到 /lib 或 /usr/lib 之类的目录下,ldconfig 更新一下
之后和 windows 下的就差不多了
动态库 .so 文件放到 /lib 或 /usr/lib 之类的目录下,ldconfig 更新一下
之后和 windows 下的就差不多了