创建c linux库

时间:2015-05-04 10:31:40

标签: java c openssl java-native-interface shared-libraries

您好我正在创建一个与JNI一起使用的openssl包装器c库。我的源文件名是rsa.c,JNI头文件名是OpensslRSA.h,它包含在JAVA_HOME / include和JAVA_HOME / include / linux目录中。我使用以下语法来创建此库。
gcc -shared -fpic -o librsa.so -I / usr / local / jdk1.7.0_45 / include -I / usr / local / jdk1.7.0_45 / include / linux rsa.c

此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 = / home / agarwal / test / c_tests / opensslrsalib OpensslRSA
然后它给出了以下错误
java:符号查找错误:/home/agarwal/test/c_tests/opensslrsalib/librsa.so:unfined defined symbol:BIO_new_mem_buf
任何机构都可以让我知道我该怎么做,因为所有使用的头文件都存在于/ usr / include中,因为在c源中使用

1 个答案:

答案 0 :(得分:1)

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

相关问题