Ubuntu18.04安装Ipopt-3.12.8流程

本文主要介绍在Ubuntu18.04中安装Ipopt库的流程,及过程报错的解决方法,已经有很多关于Ipopt安装的博客,但经过我的测试,很多都失效了,经过探索,找到可流畅的安装Ipopt的方法,总结成本篇博客。

1、安装Install CPPAD & Fortran

bash 复制代码
sudo apt-get install cppad gfortran

2、下载Ipopt-3.12.8

官网下载Ipopt-3.12.8

将下载的Ipopt-3.12.8.zip复制到主目录下,并提取至此处(也就是解压),得到名为ipopt-3.12.8的文件夹

注意:解压得到的名为ipopt-3.12.8的文件夹一定要在主目录下,不然会安装失败,本人就经历过这样的痛苦。

3、分步下载所需的库

下载Blas

双击进入ipopt-3.12.8文件夹,再双击进入ThirdParty,然后在空白处,右键选择在终端打开,然后执行以下命令,等待下载完毕:

bash 复制代码
cd Blas/
./get.Blas

下载Lapack

双击进入ipopt-3.12.8文件夹,再双击进入ThirdParty,然后在空白处,右键选择在终端打开,然后执行以下命令,等待下载完毕:

bash 复制代码
cd Lapack/
./get.Lapack

下载Mumps

下载这个依赖库的时候会出现连接超时,这样的错误

--2023-11-27 19:30:03-- http://mumps.enseeiht.fr/MUMPS_4.10.0.tar.gz

正在解析主机 mumps.enseeiht.fr (mumps.enseeiht.fr)... 147.127.176.144

正在连接 mumps.enseeiht.fr (mumps.enseeiht.fr)|147.127.176.144|:80... 已连接。

已发出 HTTP 请求,正在等待回应... 读取文件头错误 (连接被对方重设)。

重试中。

出现上面的错误是因为get.Mumps文件中的下载地址失效了

更换地址:双击进入ipopt-3.12.8文件夹,再双击进入ThirdParty,然后再双击进入Mumps,再打开get.Mumps,把第31行的地址更换成以下地址:

bash 复制代码
$wgetcmd http://graal.ens-lyon.fr/MUMPS/MUMPS_${mumps_ver}.tar.gz

地址更换好之后,开始下载Mumps:

双击进入ipopt-3.12.8文件夹,再双击进入ThirdParty,然后在空白处,右键选择在终端打开,然后执行以下命令,等待下载完毕:

bash 复制代码
cd Mumps/
./get.Mumps

下载Metis

双击进入ipopt-3.12.8文件夹,再双击进入ThirdParty,然后在空白处,右键选择在终端打开,然后执行以下命令,等待下载完毕:

bash 复制代码
cd Metis/
./get.Metis

这个我在安装的时候没出现什么问题。

4、编译安装

在Ipopt-3.12.8文件夹下,右键选择在终端打开,然后在打开的终端下,依次执行以下4条语句:

bash 复制代码
mkdir build  && cd build 
bash 复制代码
../configure 
bash 复制代码
make -j4
bash 复制代码
make install

5、将安装文件复制到特定目录

在Ipopt-3.12.8文件夹下,右键选择在终端打开,然后在打开的终端下,依次执行以下3条语句:

bash 复制代码
cd build/
bash 复制代码
sudo cp -a include/* /usr/include/. 
bash 复制代码
sudo cp -a lib/* /usr/lib/.

到这里Ipopt的安装流程就结束了

6、验证是否安装成功

在下图所示的目录下,右键选择在终端打开,然后执行sudo make指令:

然后使用以下指令,执行生成的可执行文件,若出现类似于以下的内容,说明Ipopt已经成功安装了

bash 复制代码
./cpp_example

congratulations

参考

相关推荐
云飞云共享云桌面18 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
暮云星影21 小时前
全志linux开发屏幕适配(一)屏幕参数设置说明
linux·arm开发
Maynor99621 小时前
我用 Codex 给自己的网站上线了一个智能体客服:从 Dify 到服务器部署,全程实战复盘
运维·服务器
kiros_wang1 天前
鸿蒙 ArkUI:V1 与 V2 装饰器全面对比与迁移指南
ubuntu·华为·harmonyos
java_cj1 天前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
swordbob1 天前
NIO 的 Channel 里有多个 BIO 吗?
linux·网络·nio
深圳恒讯1 天前
越南服务器BGP多线和单线有什么区别?
运维·服务器
Fcy6481 天前
Linux下 信号的保存与捕捉
linux·中断·信号的捕捉·信号的保存
志栋智能1 天前
超自动化运维如何提升安全合规水平?
运维·安全·自动化
A_humble_scholar1 天前
Linux(九) 进程管理完全指南:从入门到实战
linux·运维·chrome