2015-05-04 3 views
0

Привет Я создаю библиотеку cs-оболочкой openssl для использования с 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

Эта программа использует с ниже заголовочных файлов

 
#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
Может ли тело, дайте мне знать, что я должен сделать для этого, как все файлы заголовков, используемых существуют in/usr/include в соответствии с используемым в c источником

+0

Вы в Windows? Если это так, я не считаю, что использует 'JAVA_HOME' для библиотеки' PATHs'. – jww

ответ

1

BIO_new_mem_buf находится в библиотеке openssl. Вы должны связать свою библиотеку с -lcrypto (нижний регистр L) или с тем, что дает вам pkg-config --libs openssl.

Смежные вопросы