Linux上编译和安装SOFA23.06

前言

你可以直接使用编译安装好的SOFA版本Installing from all-included binaries (v23.06.00):

在这里插入图片描述

如果你想自己编译,可以看我下面写的内容,不过绝大多数是从官网来的,如果和官网有出入,建议还是以官网为准。


在Linux下安装了SOFA23.06(23年的最新版),建议先参考油管的视频熟悉一下流程,虽然它的安装距离23年有点久远了,但是基本上按它的步骤来没什么问题:

How to build SOFA on Linux (xubuntu18.04)

博主使用的是自己编译,后续要自己安装其他插件什么的适配性比较好,安装Linux版本主要使用官网的说明来安装,注意SOFA policy is to support only the latest Ubuntu LTS.(SOFA目前只支持在Ubuntu LTS上安装):

SOFA build on linux

空间足够就把官网文档的所有命令都复制进去安装(下面标注可选的可以不装):

构建工具

编译器

首先安装标准编译工具:

sudo apt install build-essential software-properties-common

gcc

要了解哪些 GCC 版本可用于您的发行版,请运行以下命令:

apt-cache search '^gcc-[0-9.]+$'

然后,使用常用命令安装最新的(以 gcc-11 为例):

sudo apt install gcc-11

Clang

Clang 是 GCC 的替代品。它的编译速度大约快两倍!建议安装 Clang 5 或更高版本。

要了解哪些 Clang 版本可用于您的发行版,请运行以下命令:

apt-cache search '^clang-[0-9.]+$'

然后,使用常用命令安装最新的命令(以 clang-12 为例):

sudo apt install clang-12

CMake:Makefile 生成器

在编译 SOFA 项目之前,需要 CMake 对其进行配置。请注意,SOFA 至少需要 CMake 3.12。

sudo apt install cmake cmake-gui

(可选)ninja-构建系统

Ninja 是 Make 的替代品。它可以更好地处理增量生成。

sudo apt install ninja-build

(可选)CCache:缓存系统

我们建议您使用 ccache。这绝不是强制性的,但如果对 SOFA 进行更改,它将大大缩短编译时间。

sudo apt install ccache

依赖

SOFA 需要一些依赖:

Qt (>= 5.12.0) 【带有Qt Charts 和 Qt WebEngine】

建议使用统一安装程序将 Qt 安装在您的用户目录中。确保启用 Qt Charts 和 Qt WebEngine 组件。

在这里插入图片描述

安装的网址链接:

https://download.qt.io/official_releases/online_installers/

OpenGL

sudo apt install libopengl0

boost(>= 1.65.1)

sudo apt install libboost-all-dev

Python 3.8

sudo apt install python3.8-dev

其他组件和包,主要是pip,numpy、scipy和pybind11(这个最好也装上,后面可能有用):

sudo apt-get install python3-distutils \ && curl -L https://bootstrap.pypa.io/pip/get-pip.py --output /tmp/get-pip3.py \ && python3.8 /tmp/get-pip3.py \ && python3.8 -m pip install --upgrade pip \ && python3.8 -m pip install numpy scipy pybind11

其他插件

这里我没有装,要用的时候再装也是可以的:

在这里插入图片描述

构建SOFA

官网建议如下建立目录,

sofa/
├── build/
│   ├── master/
│   └── v23.06/
└── src/└── < SOFA sources here >

选择一个位置,在终端输入。

mkdir sofa
cd sofa
mkdir build
mkdir src
cd ..

然后克隆SOFA的23.06的版本:

git clone -b v23.06 https://github.com/sofa-framework/sofa.git sofa/src

使用cmake生成Makefile

在使用cmake前最好检查一下自己的Ubuntu有没有安装stdc++(这是clang++使用的),如果使用的是gcc编译器,应该检查有没有g++。没有可能会报错:

我这里安装的是stdc++:

sudo apt-get install libstdc++-11-dev
  1. 切换路径到sofa/build下面
cd sofa/build
cmake-gui ../src

在这里插入图片描述

  1. 如果安装了 Ninja,选择“CodeBlocks – Ninja”。否则,选择“CodeBlocks – Unix Makefile”。我这里选择前者。

  2. 选择“Specify native compilers” ,然后点 “Next”,设置C编译器和C++编译器

Set the C compiler to /usr/bin/gcc or /usr/bin/clang
Set the C++ compiler to /usr/bin/g++ or /usr/bin/clang++

这里的文件名具体到usr目录下看一下,像我这里选的是/usr/bin/clang-12/usr/bin/clang++-12

在这里插入图片描述

  1. 点击configure
    在这里插入图片描述

  2. 有什么报错就检查报错的来源修复就行了,一般是没找到依赖的路径,添加进去就行了。可以看看视频的操作:How to build SOFA on Linux (xubuntu18.04)

  3. (可选)自定义SOFA 通过CMake变量:

  • 可修改CMAKE_BUILD_TYPE 为“Release” 或 “RelWithDebInfo” (recommended) 或 “Debug”
  • 激活或不激活插件: PLUGIN_XXX,打勾与不打勾
  • 激活或不激活功能: SOFA_XXX,打勾与不打勾
  1. 没有问题了就点击generate
  2. 退出cmake-gui,然后再build目录下输入:
ninja

就开始编译了,这里应该是没有什么错误的。

我自己装了一些插件,印象中有两个错误:

  1. 某文件的某行override删去(没有覆盖的虚函数)
  2. 某文件调用函数名wblock改成wbloc,不太记得了QAQ.(源代码还有bug,emmm)

如果一切正常,你在build目录下的终端应该输入:

./bin/runSofa

可以看到蛇的画面

在这里插入图片描述

至此安装就完成了

(可选)安装

另外可以进行安装,把所有编译好的文件放在一个文件夹里。我这里在build目录下建立一个install的文件夹:

mkdir install

然后在build目录下打开终端输入

cmake -DCMAKE_INSTALL_PREFIX=/home/lsy/sofa/build/install ../src
ninja install

然后你就能在install文件下找到你安装的文件。

加入插件

cmake-gui里已有的插件

需要先进行编译为.so文件,然后才可以添加。

首先在SOFA里是集成了一些插件的,可以直接从github仓库fetch,在build目录下打开终端,输入:

cmake-gui ../src

比如我要安装SofaPython3,找到SOFA_FETCH_SOFAPYTHON3这个变量打勾(我这里的图片就不展示打勾了)

在这里插入图片描述

然后就能看到出现了PLUGIN_SOFAPYTHON3的变量,打勾

在这里插入图片描述

点击configure,没有报错就generate,然后关闭cmake-gui。在终端输入ninja重新编译。

cmake-gui里没有的插件

如果需要安装cmake-gui里没有的插件,比如STLIB这个插件,就需要自己在cmake里添加了,参见官网说明:Build a plugin

另外油管还有个视频演示了怎么加入插件:Compile external plugins with SOFA on Linux (xubuntu18.04)

官网建议按下面的目录格式创建文件夹管理插件

ext_plugin_repo/
├── plugin1/
├── plugin2/
└── ...

在sofa的目录下输入:

mkdir ext_plugin_repo
cd ext_plugin_repo

在这里插入图片描述

我这里选择的是in-tree的编译,在ext_plugin_repo目录下新建一个CMakeLists.txt

touch CMakeLists.txt

在这里插入图片描述
然后在这个目录下克隆仓库,比如

git clone https://github.com/SofaDefrost/STLIB.git

在CMakeLists.txt按照下面的格式书写:

cmake_minimum_required(VERSION 2.8.12)find_package(SofaFramework)sofa_add_subdirectory(plugin path_to_plugin1/  name_of_project_plugin1)
sofa_add_subdirectory(plugin path_to_plugin2/  name_of_project_plugin2)

添加几个插件sofa_add_subdirectory就几行,比如我这里写的是:

cmake_minimum_required(VERSION 2.8.12)find_package(SofaFramework)sofa_add_subdirectory(plugin STLIB/ STLIB VERSION 3.0)

sofa_add_subdirectory里第一个参数固定写plugin,第二个参数写这个插件的路径(这里使用的是相对路径:STLIB/),第三个参数是这个插件里CMakeLists的项目的名字STLIB VERSION 3.0

在这里插入图片描述
在这里插入图片描述
在之前的cmake-gui里加入SOFA_EXTERNAL_DIRECTORIES关键字,填入插件放置的路径:

在这里插入图片描述

接下来重复cmake-gui里已有的插件的步骤,除了fetch仓库不用做其他都是一样的。

另外还有插件安装视频的说明:

使用插件,在sofa的gui里打开Plugin Manager在这里插入图片描述

添加对应的.so文件就好了,点击Add寻找(比如这里是libSTLIB.so)。

在这里插入图片描述
另外可以设置一下PATH和PYTHONPATH:

我这里的设置是r:

export PATH=/path/to/runSofa:$PATH
export PYTHONPATH=/path/to/SofaPython3:$PYTHONPATH

我这里设置的PYTHONPATH如下所示(安装了STLIB、SofaPython3、SoftRobots的插件),其中packages:/home/lsy/sofa/build/install/plugins/STLIB/lib/python3/site-packages:/home/lsy/sofa/build/install/plugins/SofaPython3/lib/python3/site-packages:/home/lsy/sofa/build/install/plugins/SoftRobots/lib/python3/site-packages是新加入的。

/opt/ros/noetic/lib/python3/dist-packages:/home/lsy/sofa/build/install/plugins/STLIB/lib/python3/site-packages:/home/lsy/sofa/build/install/plugins/SofaPython3/lib/python3/site-packages:/home/lsy/sofa/build/install/plugins/SoftRobots/lib/python3/site-packages

以及PATH如下所示,其中/home/lsy/sofa/build/bin是新加入的runSofa的路径:

/opt/ros/noetic/bin:/home/lsy/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/lsy/sofa/build/bin

在命令行输入runSofa直接就能弹出小蛇的界面了。

runSofa

运行python文件**.py(需要安装一下SofaPython3插件):

runSofa **.py

完活!

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

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

相关文章

PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件(已成功实现)

环境: Virtual Environment 7.3-3 Win s2019 UltraISO9.7 USM6.0 NTLite_v2.1.1.7917 问题描述: PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件 本次目标 主要是对虚拟机里面Win系统备份做成可安装ISO文件恢复至别的虚拟机或者实体机上 解决方案: …

【数据库】数据库连接池导致系统吞吐量上不去-复盘

在实际的开发中&#xff0c;我们会使用数据库连接池&#xff0c;但是如果不能很好的理解其中的含义&#xff0c;那么就可以出现生产事故。 HikariPool-1 - Connection is not available, request timed out after 30001ms.当系统的调用量上去&#xff0c;就出现大量这样的连接…

NET8 ORM 使用AOT SqlSugar

.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在AOT下运行了 Nuget安装 SqlSugarCore 具体代码 StaticConfig.EnableAot true;//启用AOT 程序启动执行一次就好了//用SqlSugarClient每次都new,不要用单例模式 var db new SqlSugarClient(new ConnectionC…

Os-ByteSec

Os-ByteSec 一、主机发现和端口扫描 主机发现&#xff0c;靶机地址192.168.80.144 端口扫描&#xff0c;开放了80、139、445、2525端口 二、信息收集 访问80端口 路径扫描 dirsearch -u "http://192.168.80.144/" -e *访问扫描出来的路径&#xff0c;没有发现…

Idea安装完成配置

目录&#xff1a; 环境配置Java配置Maven配置Git配置 基础设置编码级设置File Header自动生成序列化编号配置 插件安装MyBtisPlusRestfulTooklkit-fix 环境配置 Java配置 Idea右上方&#xff0c;找到Project Settings. 有些版本直接有&#xff0c;有些是在设置下的二级菜单下…

LLM实现RPA

“PROAGENT: 从机器人流程自动化到代理流程自动化”这篇论文有几个创新点是比较有意思的&#xff1a;1.通过描述方式生成执行链&#xff0c;执行链通过代码方式生成保证执行链的稳健、可约束2.对执行过程抽取出数据结构&#xff0c;数据结构也通过代码生成方式来约束3.整个过程…

Web之CSS笔记

Web之HTML、CSS、JS 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09;CSS与HTML的结合方式CSS选择器CSS基本属性CSS伪类DIVCSS轮廓CSS边框盒子模型CSS定位 Web之HTML笔记 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09; Css是种格式化网…

【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(一)

文章目录 Abstract第一章 引言1.1 问题陈述1.2 研究假设1.3 贡献1.4 大纲 第二章 背景和相关工作2.1 CAN安全威胁2.1.1 CAN协议设计2.1.2 CAN网络攻击2.1.3 CAN应用攻击 2.2 可信执行2.2.1 软件认证2.2.2 消息身份认证2.2.3 可信执行环境2.2.4 Sancus2.2.5 VulCAN 2.3 侧信道攻…

竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

Windows 11 设置 wsl-ubuntu 使用桥接网络

Windows 11 设置 wsl-ubuntu 使用桥接网络 0. 背景1. Windows 11 下启用 Hyper-V2. 使用 Hyper-V 虚拟交换机管理器创建虚拟网络3. 创建 .wslconfig 文件4. 配置 wsl.conf 文件5. 配置 wsl-network.conf 文件和 resolv.conf6. 创建 00-wsl2.yaml7. 安装 net-tools 和 openssh-s…

c# webapi 处理跨源问题

利用cors中间件处理跨源问题。 首先&#xff0c;什么是跨域&#xff08;跨源&#xff09;问题&#xff1a; 是指不同站点之间&#xff0c;使用ajax无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃…

除了chatGPT网站外,国内有些可以使用的AI网站 文心一言 讯飞星火 豆包 通义千问 人工智能网站 AI网站

2023年随着人工智能技术的不断发展&#xff0c;AI网站如ChatGPT等越来越受到人们的关注。这些网站具有多种作用&#xff0c;可以帮助人们更方便地获取信息、解决问题&#xff0c;甚至进行创作。 首先&#xff0c;AI网站可以提供智能问答服务。与传统的搜索引擎相比&#xff0c…

es 算法函数 有点不太懂了没有大神给指点一下

我先说一下我对算法分析的理解 算法函数&#xff0c;我们使用算法函数给指定的数据提高对应的值的方式 比如我现在要给一家酒店排名提高排名&#xff0c;我们可以利用算法函数&#xff0c;提高酒店排名&#xff0c;因为酒店的名称 相关算法的使用场景 在使用的时候出现了这…

CI/CD --git版本控制系统

目录 一、git简介 二、git使用 三、github远程代码仓库 一、git简介 Git特点&#xff1a; 速度简单的设计对非线性开发模式的强力支持&#xff08;允许成千上万个并行开发的分支&#xff09;完全分布式有能力高效管理类似 Linux 内核一样的超大规模项目&#xff08;速度和数…

【有源码】基于asp.net的旅游度假村管理系统C#度假村美食住宿一体化平台源码调试 开题 lw ppt

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

ChatGPT暂时停止开通puls,可能迎来封号高峰期

前言: 前两日,chat gpt的创始人 San Altman在网上发表了,由于注册的使用量超过了他们的承受能力,为了确保每个人的良好使用体验,chat gpt将暂时停止开通gpt plus。 情况: 前段时间好像出现了官网崩溃的情况,就连api key都受到了影响,所以现在就开始了暂时停止puls的注…

解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者

文章目录 前言一、什么是 Amazon CodeWhisperer&#xff1f;二、如何使用CodeWhisperer&#xff1f;安装CodeWhisperer插件配置CodeWhisperer生成注释和文档 总结 前言 随着CHATGPT的一声巨响&#xff0c;大语言模型已经成为了一个备受瞩目的创新应用。亚马逊云科技作为全球领…

二叉树的遍历(非递归版)

文章目录 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 二叉树的前序遍历 用递归实…

想要精通算法和SQL的成长之路 - 摩尔投票法的运用

想要精通算法和SQL的成长之路 - 摩尔投票法的运用 前言一. 多数元素1.1 摩尔投票法 二. 多数元素II2.1 分析 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 多数元素 原题链接 1.1 摩尔投票法 简单来说&#xff0c;假设数组 num 的众数是 x&#xff0c;数组长度为n。 有…

人工智能基础_机器学习044_逻辑回归代码实现与手动计算概率---人工智能工作笔记0084

上面我们已经把逻辑回归的公式,以及,公式对应的图形都画画出来了,然后我们再来看看 如何用代码实现 可以看到上面是代码,咱们自己去写一下 import numpy as np from sklearn.linear_model import LogistieRegression from sklearn import datasets # 训练数据和测试数据拆分…