天天看點

/LGC實體引擎/Ubuntu 下編譯運作 Box2D

Ubuntu 下編譯運作 Box2D 作者: 劉鵬 日期: 2009-03-16 本文介紹了在 Ubuntu 下編譯運作 Box2D 的過程、方法和注意事項。

我的環境

  • Ubuntu 8.10
  • OpenGL
  • glut

下面介紹我的編譯和安裝步驟。

下載下傳正确的源碼包

下載下傳 Box2D_v2.0.1-cmake.tar.bz2 檔案,連結位址是 http://www.box2d.org/forum/download/file.php?id=365

注意,不能使用 box2d 首頁上提供的源碼包,我最初使用那個包,編譯報錯,出錯資訊如下所示:

Dynamics/Contacts/b2PolyContact.cpp:53: error: ‘memcpy’ was not declared in this scope



      

解壓包并修改 Makefile 檔案

解壓下載下傳的包,進入 Box2D_v2.0.1-cmake/Box2D 目錄,Makefile 裡有幾行是 作者寫死寫的源檔案路徑,你的目錄往往與該作者的路徑不同,需要修改成自己的路徑。在 Makefile 中搜尋 drayan ,把路徑改成自己的。我的修改如下所示:

...



# The top-level source directory on which CMake was run.

CMAKE_SOURCE_DIR = /home/liupeng/work/box2d/box2d_cmake/Box2D_v2.0.1-cmake/Box2D



# The top-level build directory on which CMake was run.

CMAKE_BINARY_DIR = /home/liupeng/work/box2d/box2d_cmake/Box2D_v2.0.1-cmake/Box2D



...



# The main all target

all: cmake_check_build_system

    $(CMAKE_COMMAND) -E cmake_progress_start /

/home/liupeng/work/box2d/box2d_cmake/Box2D_v2.0.1-cmake/Box2D/CMakeFiles /

/home/liupeng/work/box2d/box2d_cmake/Box2D_v2.0.1-cmake/Box2D/CMakeFiles/progress.make

    $(MAKE) -f CMakeFiles/Makefile2 all

    $(CMAKE_COMMAND) -E cmake_progress_start /home/liupeng/work/box2d/box2d_cmake/Box2D_v2.0.1-cmake/Box2D/CMakeFiles 0

.PHONY : all



      

下載下傳并安裝 GLUI 庫

box2d 在 linux 下運作需要使用 GLUI 庫,GLUI 是一個基于 GLUT 的使用 C++ 開發的 GUI 庫,它為 OpenGL 應用程式提供了許多控件,如 button, checkbox, radio button, spinner 等。它獨立于視窗系統,使用 GLUT 或者 FreeGLUT。

從 http://sourceforge.net/projects/glui/ 下載下傳,我下的是 2.36 版本。

解開壓縮包,進入 glui-2.36/src 目錄,運作 make ,之後在 glui-2.36/src/lib 目錄下的 libglui.a 是編譯出來的靜态庫,在 glui-2.36/src/inlcude/GL 目錄下的 glui.h 是頭檔案。

将 libgui.a 拷到 /usr/lib 目錄下,将 glui.h 拷到 /usr/include 目錄下。

修改 TestBed 的 Makefile

安裝了 GLUI 後還需修改 TestBed 的 Makefile 檔案,将 GLUI 庫和頭檔案路徑改成你自己的。

進入 Box2D_v2.0.1-cmake/Box2D/Examples/TestBed 目錄,打開 Makefile 檔案,修改 PROJECT, CXXFLAGS ,LDFLAGS 三項。我的 GLUI 庫和頭檔案都放在 /usr 目錄,我把 PROJECT 改成 /usr,CXXFLAGS 和 LDFLAGS 分别做想應修改。

如下面的代碼所示。

TARGETS=    Gen/float/testbed Gen/fixed/testbed



#PROJECT=   ../..

PROJECT=    /usr



#CXXFLAGS=  -g -O2 -I$(PROJECT)/Contrib -I$(PROJECT)/Include -DGLUI_FREEGLUT

CXXFLAGS=   -g -O2 -I$(PROJECT)/lib -I$(PROJECT)/include -DGLUI_FREEGLUT



#LDFLAGS=   -L$(PROJECT)/Contrib/freeglut -L$(PROJECT)/Contrib/glui /

LDFLAGS=    -L$(PROJECT)/lib -L$(PROJECT)/lib /

... ...





      

編譯 Box2D

回到 Box2D_v2.0.1-cmake/Box2D 目錄,運作 make ,不出意外可以正常編譯通過了。此時在 Box2D_v2.0.1-cmake/Box2D/Examples 目錄下可以看到編譯出來的可執行檔案了:helloworld 和 framework.

運作 framework,應該可以看到 testbed 運作起來了,截圖如下所示:

/LGC實體引擎/Ubuntu 下編譯運作 Box2D

參考

  • Box2D with Linux
  • Linux (Ubuntu) Intalling Problems and Guide discussion at Box2D forum

繼續閱讀