gpt4 book ai didi

java - 创建c linux库的问题

转载 作者:行者123 更新时间:2023-11-30 15:20:25 25 4
gpt4 key购买 nike

您好,我正在创建一个与 JNI 一起使用的 openssl 包装器 C 库。我的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: undefined symbol :BIO_new_mem_buf
任何人都可以让我知道我应该为此做什么,因为所有使用的头文件都存在于/usr/include 中,就像在 c 源代码中使用的那样

最佳答案

BIO_new_mem_buf位于openssl库中。您必须使用 -lcrypto (小写 L)或 pkg-config --libs openssl 为您提供的链接库。

关于java - 创建c linux库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com