Ubuntu20.04安装Ipopt的流程介绍及报错解决方法(亲测简单有效)

news2024/11/16 10:16:47

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

   1、安装Install CPPAD & Fortran

   在终端执行以下语句,安装cppad

sudo apt-get install cppad gfortran  

在这里插入图片描述

   2、下载Ipopt-3.12.8

   通过以下链接从官网下载Ipopt-3.12.8,

   https://www.coin-or.org/download/source/Ipopt/

在这里插入图片描述

   将下载的Ipopt-3.12.8.zip复制到准备存储ipopt库的地方,这里我放到了主目录下,并提取至此处(也就是解压),得到名为ipopt-3.12.8的文件夹
在这里插入图片描述

   3、分步下载所需的库

   (1)、双击进入ipopt-3.12.8文件夹,在空白处,右键选择在终端打开

在这里插入图片描述

   (2)、依次输入以下指令来进入Blas目录下,并下载Blas

cd ThirdParty/Blas/
 ./get.Blas

在这里插入图片描述

   (3)、依次输入以下指令来进入Lapack目录下,并下载Lapack

cd ../Lapack
./get.Lapack

在这里插入图片描述

   (4)、依次输入以下指令来进入Mumps目录下,并下载Mumps

cd ../Mumps
 ./get.Mumps

   不出意外的话,这一步会执行失败,如下图所示,经过测试原因是get.Mumps文件中写的下载地址已经失效了
在这里插入图片描述
   我找到了该下载网址的可用替代网址,在Mumps目录下找到并打开get.Mumps的文件,将设定下载链接的以下语句(大约在第31行)

$wgetcmd http://mumps.enseeiht.fr/MUMPS_${mumps_ver}.tar.gz

   修改为以下语句,并保存

$wgetcmd http://graal.ens-lyon.fr/MUMPS/MUMPS_${mumps_ver}.tar.gz

在这里插入图片描述

   然后再次在之前的终端下执行 ./get.Mumps指令,就可以正常下载了

在这里插入图片描述

   (5)、依次输入以下指令来进入Metis目录下,并下载Metis

 cd ../Metis 
./get.Metis

   不出意外的话,这一步同样会执行失败,因为get.Metis文件中写的下载地址好像也失效了…

在这里插入图片描述

   但遗憾的是,我没有找到该网址的可用替代网址,因此不能通过上一步那样修改网址的方法来解决该问题。

   不过,我找到了这一步想要下载的资源包,我会将其放在附件中,并绑定为该博客的绑定资源,方便大家免费获取。

   下载后会得到以下压缩包
在这里插入图片描述
   将其复制到Metis文件夹下,并修改该目录下的get.Metis文件,将以下两行语句注释掉(大概分为位于24和26行),并保存文件。如下图所示

rm -f metis-4.0.3.tar.gz
#$wgetcmd http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD/metis-4.0.3.tar.gz

在这里插入图片描述

   然后再次在之前的终端下执行 ./get.Metis指令,就可以正常进行此步了

在这里插入图片描述

   4、编译安装

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

mkdir build  && cd build 
../configure 
make -j4
make install

在这里插入图片描述

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

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

cd build/
sudo cp -a include/* /usr/include/. 
sudo cp -a lib/* /usr/lib/.

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


   6、验证是否安装成功

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

sudo make

在这里插入图片描述

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

./cpp_example

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一站式数据可视化与分析平台JVS智能BI强大的数据节点功能

在商业智能(BI)中,数据集是数据的集合,用于分析和报告。数据节点是数据集中的一个重要组成部分,它代表数据集中的一个特定数据点或数据元素。通过使用数据节点,可以对数据进行过滤、分组和计算,…

Netty通信在中间件组件中的广泛使用-Dubbo3举例

Netty是一个高性能异步IO通信框架,封装了NIO,对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty,比如说:Dubbo3,rocketmq,ElasticSearch等。 比方说,我们使用dubbo作为rpc跨…

批量混剪系统视频闪闪批量剪辑:只需几段素材片段即可批量混剪大量成片,快速制作大量成片的秘密

视频闪闪批量混剪系统:快速制作大量成片的秘密 在今天这个视频内容爆炸的时代,如何快速处理大量的素材并生成优质的成片,是许多视频制作人员面临的挑战。而视频闪闪批量混剪系统,却能帮助你轻松解决这一难题。 视频闪闪批量混剪…

Qt多工程同名字段自动翻译工具

开发背景 项目里不同工程经常会引用同一批公共类,这些类里如果有字段需要翻译,需要在不同的项目里都翻译一遍,比较麻烦冗余。 特此开发了这个小翻译工具,能读取程序目录下的所有ts文件,以类名归类,不同项目…

登陆认证权限控制(1)——从session到token认证的变迁 session的问题分析 + CSRF攻击的认识

前言 登陆认证,权限控制是一个系统必不可少的部分,一个开放访问的系统能否在上线后稳定持续运行其实很大程度上取决于登陆认证和权限控制措施是否到位,不然可能系统刚刚上线就会夭折。 本篇博客回溯登陆认证的变迁历史,阐述sess…

查找算法 —— 斐波拉契查找法

一、介绍 斐波拉契查找法是以分割范围进行查找的,分割的方式是按照斐波拉契级数的方式来分割。好处是:只用到加减运算,计算效率较高一些。 要使用斐波拉契查找首先需要定义一颗斐波拉契查找树,建立规则如下: 1.斐波拉契…

德国鞋履品牌【Birkenstock】申请15亿美元纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,德国鞋履品牌【Birkenstock】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(BIRK),Birkens…

Vue-1.9工程化开发和脚手架

开发Vue的两种方式: 1.核心包传统开发模式:基于html/css/js文件,直接引入核心包,开发Vue 2.工程化开发模式:基于构建工具(例如:webpack)的环境中开发Vue 问题: 1&…

如何安装TortoiseSVN并实现公网提交文件至本地SVN服务器?

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

设计模式16、中介者模式 Mediator

解释说明:中介者模式(Mediator Pattern)用一个中介对象来封装一系列的对象交互 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 抽象中介者(Mediator&#xff0…

Kaadas凯迪仕助力亚运盛会,尽展品牌硬核科技与智能锁行业风采

9月23日至10月8日,亚洲最大规模体育赛事亚运会在杭州举办。作为国际性体育赛事,除赛中的各类竞赛项目外,杭州亚运会前后相关活动也吸引了大众目光的聚焦。 Kaadas凯迪仕智能锁作为此次杭州亚运会官方指定智能门锁,以#凯迪仕守护每…

IP真人识别方法与代理IP检测技术

随着互联网的发展,IP地址在网络安全和数据分析中扮演着重要的角色。为了维护网络的安全性和识别真实用户,IP地址的真实性和来源成为了一个关键问题。 什么是IP真人识别? IP真人识别是一种技术,旨在确定IP地址背后的用户是否为真实…

深入理解RBAC

RBAC是一种基于角色实现访问控制的权限管理机制,通过定义角色和权限、用户和角色、角色和角色之间的关系,实现多层次、细粒度、可复用的权限管理系统。原文: Role-based Access Control (RBAC) Model[1] Bernard HermantUnsplash Avery Pennarun写的&quo…

XML文件详解 (java程序解析XML文件,java程序写XML文件)

XML 的全称是可扩展标记语言(eXtensible Markup Language) xml本质上是一种数据的格式,可以用来存储复杂的数据结构和数据关系。 使用XML(可扩展标记语言)有以下几个好处: 可读性强:XML使用标…

微信小程序 获取当前屏幕的可见高宽度

很多时候我们做一下逻辑 需要用整个窗口的高度或宽度参与计算 而且很多时候我们js中拿到的单位都是px像素点 没办法和rpx同流合污 官方提供了wx.getSystemInfoSync() 可以获取到部分窗口信息 其中就包括了整个窗口的宽度和高度 wx.getSystemInfoSync().windowHeight 返回值为像…

ElasticSearch 安装,保存,查询,更新,复杂查询,模糊查询,高亮查询

ElasticSearch ik分词器: ik分词器的安装,将ik分词器下载并解压,新建文件夹ik,将解压内容放进ik文件夹中,将ik文件夹放在es安装路径的plugin文件夹中 GET _analyze {"analyzer": "ik_smart",&q…

C++对string进行大小写转换的三种方法

C对string进行大小写转换的三种方法 方法一&#xff1a;下标 #include <iostream> #include <string> using namespace std;int main() {string s "ABCDEFG";for( int i 0; i < s.size(); i ){s[i] tolower(s[i]);}cout<<s<<endl;re…

详细解说iptables 高阶用法,用来完成哪些高效率网络路由策略场景,iptables 实现域名过滤,Linux如何利用iptables屏蔽某些域名?

详细解说iptables 高阶用法,用来完成哪些高效率网络路由策略场景,iptables 实现域名过滤,Linux如何利用iptables屏蔽某些域名? Linux利用iptables屏蔽某些域名 以下规则是屏蔽以 youtube.com 为主的所有一级 二级 三级等域名。 iptables -A OUTPUT -m string --string &qu…

XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言 今天用到XLSX来解析excel文件&#xff0c;调用XLSX.utils.sheet_to_json(worksheet)&#xff0c;发现如果单元格为空的话&#xff0c;解析出来的结果&#xff0c;就会缺少相应的key&#xff08;如图所示&#xff09;。但是我想要单元格为空的话&#xff0c;值就默认给空字…

layui tree监控选中事件,同步选中和取消

需求&#xff1a;需要分配权限时&#xff0c;要通过组织架构分配&#xff0c;也要通过角色分配&#xff0c;还是把选择的结果显示出来 结果如下图 代码分页面&#xff0c;类和SQL 页面&#xff1a; <% Page Language"C#" AutoEventWireup"true" Code…