1.编译GmSSL
将下载的包解压后,在GmSSL-master根目录执行:
./config
make
sudo make install
如果未执行完成上述步骤,可以参考我另一篇博客中的排错方法
https://blog.csdn.net/EEEEEEcho/article/details/113199686
执行完之后运行gmssl,报错.。
然后将/usr/local/lib64中的几个文件复制到/usr/lib64下
再次运行成功。
2. 编译java运行时需要的库
进入到GmSSL的安装位置的java文件夹下
打开build.sh
参考build.sh按下面的命令进行编译,build.sh中-L /path/to/gmssl/lib 其实就是gmssl根目录,加了lib有点误导人。
gcc -shared -fPIC -Wall -I./jni -I /software/GmSSL-master/include -L /software/GmSSL-master GmSSL.c -lcrypto -o libgmssljni.so
编译成功,得到libgmssljni.so
把上步编译出的libcrypto.so,libcrypto.so.1.1(就是GmSSL根目录中所编译出来的)
拷到当前java目录,java目录一共要有3个东西。
最后,编译GmSSL.java 并运行。
在当前的java目录执行
mkdir -p org/gmssl
cp GmSSL.java org/gmssl
javac org/gmssl/GmSSL.java
java -Djava.library.path=/software/GmSSL-master/java -classpath /software/GmSSL-master/java org.gmssl.GmSSL
3.配置到IDEA中
一定要在IDEA中创建一个org.gmssl的包,然后把当前java文件加下的GmSSL.java复制到该包下
因为,这个是在JNI中写死的。也是困惑了我一整天的一个地方。
然后使用修改代码使用绝对路径来加载.So文件