開源模擬引擎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
參考連結: