1. 程式人生 > >開源模擬引擎ODE(Open Dynamics Engine)環境搭建

開源模擬引擎ODE(Open Dynamics Engine)環境搭建

Codeblocks 版本16.01

因為模擬需要,找到了這個軟體,官網資料有點舊,比較雜亂,記錄下安裝步驟。

下載原始碼

  安裝codeblocks程式碼編輯器和premake編譯工具。

sudo add-apt-repository ppa:damien-moore/codeblocks-stable

sudo apt-get update

sudo apt-get install codeblocks

sudo apt-get install premake premake4

接著/home/yake/ProgramFiles/ode-0.13/ode/src/config.h修改為1,保持軟體對之前舊版本程式碼的相容性。

//#define dTRIMESH_OPCODE_USE_OLD_TRIMESH_TRIMESH_COLLIDER 0
#define dTRIMESH_OPCODE_USE_OLD_TRIMESH_TRIMESH_COLLIDER 1

然後轉換為codeblocks的工程(注意呼叫的是premake4注意codeblocks引數),因為目錄下有premake4.lua配置檔案,所以呼叫premake4來編譯。

$ cd /home/yake/ProgramFiles/ode-0.13/build
$ premake4 --help
$ premake4 --with-demos --with-tests codeblocks
$ premake4 --with-demos --with-tests --only-double codeblocks

ode裡面支援雙精度和單精度的模擬,本來想呼叫雙精度的,但是環境依賴項出不來,後來去掉--only-double就可以在在codeblocks裡面選擇了

在/home/yake/ProgramFiles/ode-0.13/lib/DebugDoubleLib下可以看到生成的檔案資訊

利用Codeblocks開啟工程檔案:/home/yake/ProgramFiles/ode-0.13/build/codeblocks/ode.workspace,可以看到原始碼都已經匯入進來了,如下圖所示。

解壓到ode的原始碼目錄

cd /home/yake/ProgramFiles/ode-0.13/roboSimu

因為目錄下只有premake.lua檔案,所以用premake來編譯。

$ premake --help

$ premake --os linux --target cb-gcc

同理,利用codeblocks開啟工程/home/yake/ProgramFiles/ode-0.13/roboSimu/src/roboSimu.workspace,如下圖所示

 編譯的時候報錯誤

通過修改ode_double和draw_stuff連結項解決。直接指定到上次利用DebugDoubleLib編譯好的檔案就可以解決

/usr/bin/ld: ../../lib/DebugDoubleLib/libdrawstuffd.a(x11.o)||undefined reference to symbol 'XNextEvent'| 

 通過新增X11連結項解決  

/usr/bin/ld: ../../lib/DebugDoubleLib/libode_doubled.a(atomic.o)||undefined reference to symbol 'pthread_mutexattr_init@@GLIBC_2.2.5'|

通過新增pthread連結項解決

最後的連結項如下圖所示。

Project——Build Options

編譯成功後,執行例子就可以了,這裡以hello工程為例。結果如下圖所示,執行成功後,球自由落體運動。在球體的那個視窗Ctrl+X然後按Enter退出

 參考地址:

問題解決後就可以跟著作者的目錄接著進行學習了

=========================================

workspace裡有很多個Projects,不想一個個新增連結庫

Settings——Compiler

另外替換掉命令列終端,由xterm改為gnome的

Settings——Environment

gnome-terminal -t $TITLE -x

參考連結: