SOFA编译-Ubuntu20.04-SOFA22.12

一、事前说明
单纯的编译sofa是很简单的,但是想要同时编译SofaPython3则比较难了,我编译了v22.12分支,其他版本sofa的编译也可以参考此篇教程,需注意的是:

1、确定SOFA需要的Python版本,sofa22.12需要的是python3.8,于是我使用了Ubuntu20.04。
例如Ubuntu22.04的系统python3.9。
当然,我在其他人那里看到可以给Ubuntu升级python,或者使用conda环境python,此篇教程中不讨论上面两种情况。//Add//:我验证了使用conda环境编译sofa,是可以实现的,首先conda activate yourEnv,然后cmake-gui运行编译

2、针对Ubuntu20.04,必须要使用网络HAT。不然你会走很多弯路,如何使用HAT本文第三节详细写了。

3、替换你需要的版本号,例如将v22.12更改为vXX.XX,git源码:
3.1 选择一个你想要的地址,新建一个文件夹,针对我而言,我在/home/computer/新建了一个Code文件夹,并在Code文件夹新建了一个sofa文件夹。

3.2 在/home/computer/Code/内建立一个terminal,粘贴下面指令:

git clone -b v22.12 https://github.com/sofa-framework/SofaPython3.git

3.3 在/home/computer/Code/sofa/内建立一个terminal,粘贴下面指令:

git clone -b v22.12 https://github.com/sofa-framework/sofa.git sofa/src

3.4 得到且必须是下面的文件分级效果:

--Code--SofaPython3--sofa--src

如果git失败,多尝试几次即可,这个步骤不需要网络HAT是可以git成功的。

3.5 到/home/computer/Code/sofa/src/applications/plugins/文件夹下手动删除SofaPython3文件夹,且必须删除;因为SOFA没办法通过build-in-tree的方式编译SofaPython3。

二、基础准备
1、sudo安装make、git;这个就不演示了,非常简单。
2、下面的指令无脑复制粘贴安装。
2.1 安装标准编译工具:

sudo apt install build-essential software-properties-common

2.2 gcc,运行以下命令了解哪些 GCC 版本可用于你的ubuntu发行版:

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

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

sudo apt install gcc-10

2.3 注意,我就是使用的clang,不过gcc也可以尽量安装一下,clang不能用的情况下可以替换使用gcc。Clang, GCC 的替代品。它的编译速度大约快两倍!建议安装 Clang 5 的更高版本,了解哪些 Clang 版本可用于你的发行版,运行以下命令:

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

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

sudo apt install clang-12

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

sudo apt install cmake cmake-gui

2.5 相比于(2.4)的cmake,更推荐安装Ninja:

sudo apt install ninja-build

2.6 安装Qt 5.12.8、Boost 1.71.0、Eigen 3.3.7、Python 3.8.10、pybind11 2.6.2、GLEW 2.1.0、Zlib 1.2.11、libPNG 1.6.37、libJPEG 8c、libTIFF 4.3.0:

sudo apt update
sudo apt install qt5-qmake qtbase5-dev qtchooser qtbase5-dev-tools
sudo apt install libboost-all-dev
sudo apt install libopengl0
sudo apt install libeigen3-dev
sudo apt install python3.8 python3.8-dev python3.8-distutils
sudo apt install pybind11-dev
sudo apt install libglew-dev
sudo apt install zlib1g-dev
sudo apt install libpng-dev
sudo apt install libjpeg-dev
sudo apt install libtiff-dev

2.6 基础python:

sudo apt update
sudo apt install python3.8 python3.8-distutils curl
curl -L https://bootstrap.pypa.io/pip/3.8/get-pip.py -o get-pip38.py
python3.8 get-pip38.py
python3.8 -m pip install --upgrade pip
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrcpython3.8 -m pip install numpy scipy pybind11
python3.8 -m pip show numpy pybind11 scipy

2.7 安装cache:

sudo apt install ccache

2.8 如果有兴趣,可以访问下面链接安装qt,当然这个版本要对应你要编译的SOFA,这个在sofa 的 github还有官方文档都有介绍,针对sofa22.12而言,就是5.12.8:(注意,这个没有网络HAT的话,在Ubuntu访问会被禁止访问下载网页,可以在windows通过迅雷下载器下载,然后u盘或者向日葵文件传输等方式给弄到Ubuntu中)
https://download.qt.io/archive/qt/5.12/5.12.8/

三、网络HAT
如果你在国内,不得不说这一步是必须的,不然编译是很难成功,编译过程中会访问github去下载SOFA插件的源码,除非你将插件的源码自己git下来,然后放到sofa文件夹外,例如第一步的SofaPython3

言归正传:
1、https://archive.org/download/Software_for_windows_pkg下载Software.for.Windows-0.20.39-x64-linux.tar.gz

2、新建终端并解压

tar zxvf Software.for.Windows-0.20.39-x64-linux.tar.gz

3、进入解压文件,新建一个terminal
在这里插入图片描述
4、在terminal中键入下面指令,会将software启动起来,但是可能是红色报错的状态,不是我下面图片中的样子,不用担心:

./cfw

在这里插入图片描述
5、粘贴你的URL,下载:
在这里插入图片描述
6、然后粘贴你的URL链接到火狐浏览器,会下载一个文件,使用文本编辑器打开,然后CTRL+A全选,并CTRL+C复制

7、在home/computer/文件夹下使用CTRL+H快捷键,使得隐藏的.config文件夹显示出来
找到./clash/config.yaml文件,使用文本编辑器打开
使用CTRL+A全选,并CTRL+V粘贴,保存后关闭

8、./cfw重启clash就可以正常使用了

9、手动配置全局HAT,不配置有些网页无法访问
打开 设置>网络>网络HAT,改为手动,并设置回环地址,端口和clash保持相同

在这里插入图片描述

四、开始编译
1、打开home/computer/Code/sofa/文件夹

mkdir build

文件夹分级应该是,这种叫Out-Tree编译:

--Code--SofaPython3--sofa--src--build

2、分别键入下面两行指令:

cd buildcmake-gui ../src/

3、点击Configure,选择Ninja,然后手动指定C和C++编译器,前文讲到了本文使用clang,也可以使用gcc和g++;
可以看出来,使用了HAT,可以非常顺利的配置结束:(注:不使用HAT,会停止到Adding library Sofa.GUI.Qt, 如果你没有使用HAT你会明白我是什么意思,但如果运气好的话(WALL漏了)存在配置通过的可能)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、键入python搜索,找到SOFA_FETCH_SOFAPYTHON3,勾选为True,点击Configure
在这里插入图片描述
然后点击Generate

在这里插入图片描述
generate之后的样子如下:
在这里插入图片描述
5、编译,关闭cmake-gui(叉号关闭)后,在terminal依次键入,在build文件夹会多出一个install文件夹,这就是完全编译SOFA:

ninja
ninja install

在这里插入图片描述

五、最后验证
打开/home/computer/Code/sofa/build/文件夹,新建一个terminal,键入下面指令:

pythonimport Sofa

只要如最后一张图不报错即成功!!!
Congratulations!
在这里插入图片描述

六、写在最后

如果不在意版本可以直接使用下面指令安装,直接使用SOFA

Installing SOFA latest release from conda
Quick install (recommanded)
Full SOFA core install with SofaPython3 plugin

conda install sofa-app sofa-python3 --channel sofa-framework --channel conda-forge

Or

Full SOFA core install with all packaged plugins

conda install sofa-app sofa-python3 sofa-stlib sofa-modelorderreduction sofa-beamadapter sofa-softrobots sofa-cosserat --channel sofa-framework --channel conda-forge

Testing install
Run SOFA application with its GUI

runSofa -l Sofa.GUI.Qt -g qt
Run SOFA application with its GUI and SofaPython3 plugin

runSofa -l Sofa.GUI.Qt -g qt -l SofaPython3
Please open an issue to report any problem.

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

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

相关文章

静态BFD配置

AR2配置 int g0/0/0 ip add 10.10.10.2 quit bfd quit bfd 1 bind peer-ip 10.10.10.1 source-ip 10.10.10.2 auto commit AR1配置 int g0/0/0 ip add 10.10.10.1 int g0/0/1 ip add 10.10.11.1 quit bfd quit bfd 1 bind peer-ip 10.0.12.2 source-ip 10.0.12.1 auto co…

关键字where

C# 中的 where 关键字主要用在泛型约束(Generic Constraints)中,目的是对泛型类型参数限制其必须满足的条件,从而保证类型参数具备特定的能力或特性,增强类型安全和代码可读性。 约束写法说明适用场景举例C#版本要求w…

Arm核的Ubuntu系统上安装Wireshark

Arm核的Ubuntu系统上安装Wireshark 一、安装wireshark 安装命令: sudo apt-get install wireshark-qt 如下图所示: 安装过程弹出如下界面: 鼠标选择Yes,点回车键确认 安装完成。 二、打开wireshark 输入命令行打开wireshark …

编专利或委托他人编专利属于学术不端行为吗?

原文链接:编专利或委托他人编专利属于学术不端行为吗? 自己编专利或委托他人编专利属于学术不端吗? 5月4日,一篇题为《针对性护理干预在子宫肌瘤围手术期的情绪和生活质量临床应用效果》的论文,受到网友的广泛议论。…

Music AI Sandbox:打开你的创作新世界

AI 和音乐人的碰撞 其实,Google 早在 2016 年就启动了一个叫 Magenta 的项目,目标是探索 AI 在音乐和艺术创作上的可能性。一路走来,他们和各种音乐人合作,终于在 2023 年整出了这个 Music AI Sandbox,并且通过 YouTub…

Java游戏服务器开发流水账(2)开发中Maven的管理

Maven 是一款流行的 Java 项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念来管理项目的构建、依赖和文档等。游戏服务器开发中也会使用. 项目构建 生命周期管理:Maven 定义了一套清晰的项目构建生…

枚举 · 例8扩展-校门外的树:hard

登录—专业IT笔试面试备考平台_牛客网 代码区&#xff1a; #include<algorithm> #include<iostream> #include<vector>using namespace std; struct TREE{int left,right; }; bool compare(const TREE&a,const TREE& b ){if(a.left!b.left){return…

Windows Server 2025 安装AMD显卡驱动

运行显卡驱动安装程序&#xff0c;会提示出问题。但是此时资源已经解压 来到驱动路径 C:\AMD\AMD-Software-Installer\Packages\Drivers\Display\WT6A_INF 打开配置文件&#xff0c;把这两行替换掉 %ATI% ATI.Mfg, NTamd64.10.0...16299, NTamd64.10.0, NTamd64.6.0, NTamd64.…

为什么 MySQL 用 B+ 树作为数据的索引,以及在 InnoDB 中数据库如何通过 B+ 树索引来存储数据以及查找数据

http://www.liuzk.com/410.html 索引是一种数据结构&#xff0c;用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量&#xff0c;数据量大了索引才显得有意义&#xff0c;如果我想要在 [1,2,3,4] 中找到 4 这个数据&am…

AWS VPC架构师指南:从零设计企业级云网络隔离方案

一、VPC核心概念解析 1.1 核心组件 VPC&#xff1a;逻辑隔离的虚拟网络&#xff0c;可自定义IPv4/IPv6地址范围&#xff08;CIDR块&#xff09; 子网&#xff08;Subnet&#xff09;&#xff1a; 公有子网&#xff1a;绑定Internet Gateway&#xff08;IGW&#xff09;&#…

HuggingFace与自然语言处理(从框架学习到经典项目实践)[ 01 API操作 ]

本教程适用与第一次接触huggingface与相应框架和对nlp任务感兴趣的朋友&#xff0c;该栏目目前更新总结如下&#xff1a; ​​Tokenizer​​&#xff1a; 支持单句/双句编码&#xff0c;自动处理特殊符号和填充。 批量编码提升效率&#xff0c;适合训练数据预处理。Datasets​…

【LeetCode 42】接雨水(单调栈、DP、双指针)

题面&#xff1a; 思路&#xff1a; 能接雨水的点&#xff0c;必然是比两边都低&#xff08;小&#xff09;的点。有两种思路&#xff0c;一种是直接计算每个点的最大贡献&#xff08;也就是每个点在纵向上最多能接多少水&#xff09;&#xff0c;另一种就是计算每个点在横向上…

【嵌入式开发-USB】

嵌入式开发-USB ■ USB简介 ■ USB简介

Visual Studio 项目转Qt项目

1. 先确保qmake 和 minGW &#xff08;g&#xff09; 路径都在系统变量内&#xff1b;或者通过WinR -> cmd 来检测&#xff0c; 如果能够 显示qmake 的信息 &#xff0c; g 的信息 &#xff0c; 就说明设置环境变量成功。 2. 打开项目文件夹&#xff0c;在这里打开cmd, 换…

总线通信篇:I2C、SPI、CAN 的底层结构与多机通信设计

本文为嵌入式通信协议系列第三章,深入剖析 MCU 世界中的三大总线协议 —— I2C、SPI 和 CAN。 这些总线协议广泛应用于传感器数据采集、Flash 存储、外设扩展、汽车电子、工业设备控制等领域,是嵌入式开发不可或缺的通信骨架。 📜 一、总线通信的基本概念 1.1 什么是总线?…

sherpa:介绍

更多内容&#xff1a;XiaoJ的知识星球 目录 1. sherpa 介绍 1. sherpa 介绍 sherpa是 Next-gen Kaldi 项目的部署框架。 sherpa 支持在各种平台上部署与语音相关的预训练模型&#xff0c;并提供多种语言绑定。 目前&#xff0c;sherpa 拥有以下子项目&#xff1a; k2-fsa/sh…

77.组合问题

主函数 combine def combine(self, n: int, k: int) -> List[List[int]]:result [] # 存放所有有效的组合self.backtracking(n, k, 1, [], result) # 从数字1开始搜索return result 作用&#xff1a;初始化并启动回溯过程。参数&#xff1a; n4&#xff1a;数字范围是1…

Oracle免费认证来袭

1、Oracle Cloud Infrastructure 2025 Foundations Associate” &#x1f517; 考证地址&#xff1a;https://mylearn.oracle.com/ou/exam-unproctored/oracle-cloud-infrastructure-2025-foundations-associate-1z0-1085-25/148056/241954 2、Oracle Cloud Infrastructure 2…

【Unet++】

这是一篇关于语义分割U-net及其变体网络结构的介绍性文章&#xff0c;主要介绍了U-net、U-net以及U-net的基本结构、特点和应用。 以下是对这些核心内容的简要概述&#xff1a; 1. 语义分割U-net概述: - 基本结构&#xff1a;U-net是一种编码解码结构的网络&#xff0c;起初…

git可视化工具Fork软件的详细使用教程

Fork是一款流行的Git图形化客户端&#xff0c;适用于Windows和macOS平台。使用起来确实很方便&#xff0c;唯一的缺陷就是正版需要付费使用&#xff01; Fork 安装 官网下载地址&#xff1a;Fork官网地址https://git-fork.com/ 支持 macOS 和 Windows。 安装完成后&#xff…