记录一次在Ubuntu上安装lp_solve库(java)
前言
lp_solve是一个混合整数线性规划求解器,由C语言编写的开源软件,可以求解纯线性、(混合)整数/二值、半连续和特殊有序集模型。并且经过实际验证,有极高的求解效率。
一. 安装:
1.首先在官网下载所需要的包,放到/usr/local/下并解压
https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.11/
i. lp_solve_5.5.2.11_java.zip
ii. lp_solve_5.5.2.11_source.tar.gz
部署需要三个文件:
liblpsolve55.so #解压后需要编译才能获得
liblpsolve55j.so #解压后在/usr/local/lp_solve_5.5_java/lib/ux64/下
lpsolve55j.jar #解压后在/usr/local/lp_solve_5.5_java/lib/下
2.获取liblpsolve55.so
cd /usr/local/lp_solve_5.5/lpsolve55 && bash ./ccc
编译后会生成个bin目录, bin/ux64/下即可获得liblpsolve55.so
3.将liblpsolve55.so liblpsolve55j.so 放到/usr/local/lib下
cp liblpsolve55.so liblpsolve55j.so /usr/local/lib
4.安装gcc 并将 上面三个文件拷贝到jdk目录下
#gcc
apt update && apt-get install -y gcc && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
#把这两个so文件放到jdk目录下
cp /usr/local/lib/liblpsolve55.so /usr/java/jdk1.8.0_201/ && cp /usr/local/lib/liblpsolve55j.so /usr/java/jdk1.8.0_201/
#把lpsolve55j.jar放到jdk的jre下
cp /usr/local/lp_solve_5.5_java/lib/lpsolve55j.jar /usr/java/jdk1.8.0_201/lib/
cp /usr/local/lp_solve_5.5_java/lib/lpsolve55j.jar /usr/java/jdk1.8.0_201/jre/lib/
5. 编译库文件
chmod -R 777 /usr/local/lp_solve_5.5/*
cd /usr/local/lp_solve_5.5/lp_solve && sh ./ccc
cd /usr/local/lp_solve_5.5/lpsolve55 && sh ./ccc
完成后执行,加载用户库文件
ldconfig
可以ldconfig -v |head 看到liblpsolve55.so和liblpsolve55j.so已经成功加载。
二. 调用测试
java调用前在启动jar包的时候声明一下$LD_LIBRARY_PATH,这个可以在脚本中声明也可以在/etc/profile里添加上声明,目的是加载第三方用户库去指定的这个目录下面去找。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/java/jdk1.8.0_201/
在jar包启动的时候添加启动参数
-Djava.library.path=$LD_LIBRARY_PATH
完整的启动命令为:
nohup java -jar -Djava.library.path=$LD_LIBRARY_PATH -Dspring.profiles.active=${RUN_ENV} $JAR_NAME >/dev/null 2>&1 &
启动后,通过调用测试接口查看状态。