2015-05-04 51 views
0

您好我正在创建一个openssl包装c库与JNI一起使用。我的c源文件名是rsa.c,JNI头文件名是OpensslRSA.h,它包含在JAVA_HOME/include和JAVA_HOME/include/linux目录中。我正在使用下面的语法来创建这个库。
GCC -shared -fpic -o librsa.so -I/USR /本地/ jdk1.7.0_45 /包括-I/USR /本地/ jdk1.7.0_45 /包括/ Linux的rsa.c在创建c linux库问题

这个C程序使用下面的头文件

 
#include <jni.h> 
#include <stdio.h> 
#include <OpensslRSA.h> 
#include <openssl/pem.h> 
#include <openssl/ssl.h> 
#include <openssl/rsa.h> 
#include <openssl/evp.h> 
#include <openssl/bio.h> 
#include <openssl/err.h> 

但是当我使用这个从java程序如下
的java -Djava.library.path = /家庭/阿加瓦尔/测试/ c_tests/opensslrsalib OpensslRSA
那么它会给出以下错误
的java:符号查找错误:/home/agarwal/test/c_tests/opensslrsalib/librsa.so:未定义的符号:BIO_new_mem_buf
任何机构可以让我知道我应该为此做所使用的所有头文件存在在/ usr/include中按照c源使用

+0

你在Windows上吗?如果是这样,我不相信是使用'JAVA_HOME'库'PATHs'。 – jww

回答

1

BIO_new_mem_buf位于openssl库中。您必须将您的图书馆与-lcrypto(小写字母L)或pkg-config --libs openssl为您提供的内容链接起来。