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.pswp.cn/news/904671.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904671.shtml
英文地址,請注明出處:http://en.pswp.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…