ODE 0.10.1 のインストール (Code::Blocks + Windows)
ode
2008.07.08
最新版ODE0.11.1のインストールはここです。
ODE0.10のinstall.txtを読むと,Visual Studio, Autotools (Linux, OS X), Code::Blocksでのビルドについての説明があります.ここでは日本であまりメジャーではありませんが、海外ではそこそこメジャーなマルチプラットフォームの開発環境Code::Blocks8.02用のインストール方法を説明します.
ODE 0.10のインストール
ode-0.10.1.zip のダウンロード.デスクトップへ保存.解凍.
ode-0.10.1フォルダーをcドライブのトップへコピー.以下のディレクトリ(フォルダ)構成になります.
コマンドプロンプトを起動する.
スタート→「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」
以下のようにコマンドを打ち込みますが,打ち間違えると失敗するのでカットアンドペーストを推奨します。自分で打ち込む場合は2個の-(マイナス)文字がつながって見えるので,下画像を参照して注意深く打ち込んでください.
cd c:\ode-0.10.1\build
注:cdコマンドはディレクトリの移動
premake --with-demos --with-tests --target cb-gcc
注:withとtargetの前は-(マイナス)が2個連続している.下画像参照.
成功するとcb-gccというcode::blocks用のディレクトリがbuildフォルダの中に生成されるので,あるかどうかエクスプローラで確認する.
ODEのビルド
code::blocksを起動
code::blocksのメニューバーから「ファイル(F)」→「開く(O)」を選択
このcの作業だけは中級者向けです.よくわからない方はdの作業へ進んでください。私の授業でODEを使う方はこの作業はしないで、次のdの作業へ進んでください。 これによりOPCODEの新しい衝突検出機能を有効にします.よく分からない方は飛ばしてください.
ode-0.10.1¥ode¥src¥config.hを何らかのエディタで開き,44行目を以下のように変更し保存する.
#define dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER 1
重要: ビルドターゲットを必ず DebugDoubleLib とする (下画像の赤丸箇所).ここは非常に間違いやすい箇所です。良く説明を読み十分注意して作業を進めてください。
これによりデバッグ向け,倍精度,静的なライブラリが作られます.ODEではDLL(Dynamic Link Library)より静的ライブラリ(Static Library)が推奨されています.静的ライブラリで作成した実行ファイルはサイズが大きくなりますが,配布時はその実行ファイルだけを配布すれば良くライブラリを付属する必要はありません.自分が作成した実行ファイルを配布するときは静的ライブラリがお勧めです.
また,DebugSingleLibを選ぶと単精度の静的ライブラリが生成されますが,エラーがでやすいのでお勧めできません. というわけで、DebugDoubleLib を必ず選択してください。
「ビルド(B)」→「ワークスペースをビルド(W)」を選択.ワークスペースはVisual C++のソリューションと同様なものです.
デモプログラムの実行ファイルはc:¥ode-0.10.1¥lib¥DebugDoubleLibに生成される.
試しに,demo_basket.exeをダブルクリックして起動すればODEのビルド成功.
ビルドに失敗する場合の対策
DebugDoubleLib” uses an invalid compiler . と怒られたら
原因:他のコンパイラでビルドしようとしています。
対策:設定(s)→コンパイラとデバッガ(C)→グローバルなコンパイラ設定のToolchain実行ファイルが以下のようになっているか確認し(クリックすると画像が拡大される)、違う場合は変更する。
ODE本サンプルプログラムのビルド
ダウンロードカテゴリー からrobosimu******(******は日付)をダウンロードして,c:¥ode-0.10.1にコピーし,そこに解凍する.解凍に成功するとc:¥ode-0.10.1¥roboSimuというディレクトリが生成される.その中にはsrc,texturesフォルダーとがあり,premake.exe, premake.lua, Readme.txt, roboSimu.luaファイルが生成される.srcフォルダーの中にはODE本のサンプルコードがある.
ODEのインストールと同じように,premakeコマンドを使い,code::blocks用のプロジェクトを生成する.コマンドプロンプトを起動し,以下のコマンドを実行する.
code::blocksを起動
code::blocksのメニューバーから「ファイル(F)」→「開く(O)」を選択
重要: ビルドターゲットを DebugLib とする.
ODEのライブラリをビルドするときDebugDoubleLibを選んでいるので、必ずDebugLibを選択する。
「ビルド(B)」→「ワークスペースをビルド(W)」を選択。エラーが出た場合は、ODEのビルドに失敗している可能性が高いのでODEのビルドをやり直し。
サンプルプログラムの実行ファイルはc:¥ode-0.10.1¥roboSimu¥DebugLibに生成される.
試しに,arm1.exeをダブルクリックして起動すれば成功.お疲れ様でした!
最終更新日:2008-12-16
").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1
").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0
タイトルとURLをコピーしました
コメント
OSはVistaです。Vistaのページがあったのでそちらを参照いたします。お騒がせしました。
>robosimu******(******は日付)をダウンロードして,c:¥ode-0.10.1にコピーし,そこに解凍する.解凍に成
>功するとc:¥ode-0.10.1¥roboSimuというディレクトリが生成される.
以前は、簡単にできたのですが、どうやったらroboSimuのディレクトリができるのか失念してしまいました。今は、日付付きのフォルダがで来てしまいます。何をどうするんでしたっけ? すみません。
みるとんさん,
こんにちは.
roboSimuではなくroboSimu日付きのフォルダができてしまいますね.
日付付きのフォルダから日付を抜いてrobosimuにフォルダ名を変更してください.
でむ
以前、ファイルのインストール方法が分からずに質問しました。
手順に従ってインストールしましたが、下記のところから不明です。
ODEのビルド
a.code::blocksを起動
b.code::blocksのメニューバーから「ファイル(F)」→「開く(O)」を選択
■c:¥ode-0.10.1¥build¥cb-gcc¥ode.workspace
まず、code::blocksをどこで起動するのか。bの作業はコマンドプロンプトから実行するのか。code::blocksを実行できないので、この説明以下の画面に到達できません。
この後、このcode::blocksを起動すれば、サンプルプログラムでも読み込んでプログラムをいじれるのでしょうか。
鹿児島県硫黄島 立岡
立岡様
まず,codeblocksを起動してください.スタート→すべてのプログラム→codeblocks8.02またはアイコンなどから起動します.次にbの作業をします.
bの作業は書いているとおり,「code::blocksのメニューバーから「ファイル(F)」→「開く(O)」を選択」してください.
ご回答になったでしょうか.
でむ
お返事ありがとうございます。
WindowsXPでSP3です。ただ、Linux(Ubuntu)では動作していますので、
私の環境固有の問題かもしれません。
とりあえずはLinuxでWindows用にファイルを作成したのでいいのですが、
なぜかスッキリしないので質問しました。もし、なにかわかればいいと思って
おります。
よろしく、お願いいたします。
チラッと本を見ましたがなかなか実践的な本でたのしそうです、少しずつ
遊んでみようと思います。
えらいさん、
ODE本お買い上げありがとうございます。
さて、私は講義で約180名の学生にこのページに書いてある方法でODEをインストールしましたが、えらいさんのような問題は起きませんでした。
ちなみに、WindowsはXPとVistaの両方を試しています。えらいさんのWindowsのバージョン、サービスパック適用を教えて頂けないでしょうか?
でむ
ごめんなさい。
再度自己レスです。
Windows環境でも
premake –with-demos –with-tests –os windows –target cb-gcc
とするとOKでした。(cb-gccが出来たということです。コンパイル
してません。再度このディレクトリを使ってみようかと思います。
うまくいかなっかt人は上記のコマンドラインを参考にOSを指定
しましょう!!!
ではでは。
自己レス?です。
Linux(Ubuntu)でwindowsソース作成しました。
premake –with-demos –with-tests –os windows –target cb-gcc
とし、WindowsへもってくるとOKでした。
しかし、なぜWindows環境で
premake –with-demos –with-tests –target cb-gccがダメなんでしょうか?
roboSimuも安全のため premake –os windows –target cb-gcc とすると
うまくいきました。
とりあえず、情報ある方お願いいたします。
(Windows 環境しかない方のためにも! )
よろしく、お願いいたします。
はじめまして、CodeBlocksを検索していて貴兄のサイトを見つけました。
面白そうなのと、オープンソースの方に寄付が出来るということなので
本を購入させて頂ました。(そろそろ届くころです)で、本が来る前にODE
をインストールしようと、上記の手順通りにしましたが、
premake –with-demos –with-tests –target cb-gcc
のあとcb-gccというディレクトリが出来ませんでした。
なにが悪いのか心当たりありませんでしょうか?
私のマシンにはVS2005Proエディションがインストールされています。
このあたりとかかわりがあるのでしょうか?
よろしく、ご教授下さい。
ちなみに、Ubuntu8.04ではODEは素直にインストールされ、BuildもOK
でした。(DEMO動いていました。)
(同じマシンのVirtulBox内です。このマシンは家で仕事で気になる
ところをチェックする用にも使っているので開発ツールが入っています。)
悩める親父さん、
一件落着してなによりです。このページのターゲットに関する記述が不十分ということですね。加筆しました。
また、何かあればコメントください。
でむ
ありがとうございました。私が勘違いしてターゲットを間違えていたことが
原因でした。再度やり直しましたらうまくいきました。
悩める親父さん、
エラーメッセージはdoubleのODEライブラリを見つけられないということですね。
ODEを作成したときのライブラリはターゲットをDebugDoubleLibとしたでしょうか? ODE本のサンプルプログラムをビルドするときにDebugLibを間違いなく指定しているでしょうか?
でむ
ODE本サンプルプログラムのビルドをおこなった際に下記のエラーが出ました。
ld.exe cannot find -lode doubled
何度か一からやり直しましたが改善されません。
なぜでしょう。ちなみサンプルプログラムはダウンロードカテゴリーから最近
ダウンロードしたものです。demobasket.exeでは問題ありませんでした。
qooさん,
どうもすみません.ODE本サンプルプログラムのインストールを簡単にするためにmybuildのディレクトリを削除し,roboSimuディレクトリだけで全ての作業をできるようにしていました.
記事が訂正されていなかったようです.さっそく修正させて頂きました.御指摘ありがとうございました.
でむ
qooです。
robosimを展開すると、robosimディレクトリができ、mybuildの
ディレクトリは存在しません。robosimのディレクトリでWebページ通りの
コマンドを実行することで、デモの確認ができたのですが、
解凍の仕方が違うのかな?
Highさん,
解決方法を教えて頂きありがとうございます.この手のエラーは多そうですね.さっそく,FAQに掲載させて頂きます.
でむ
Highです、解決いたしました。\(^-^)/
原因はPath変数に他のgcc (Cygwin, WideStudio, AVRGCC) の
パスの方が先に書かれて居た為、CodeBlocksが他のgccのパスを
見に行っていた為でした。
メニューの[設定] -> [コンパイラーとデバッガー]
グローバルなコンパイラ設定 -> [Toolchain実効ファイル]タブ ->
[プログラムファイル]タブ で各プログラムの正しいパスを設定しました。
qooさん,
初めまして!
robosimを展開して、premakeを実行するのはこのページの指示通りmybuildです。ODEのデモプログラムのビルドと同じようにするためにそうしました。私が試したところ問題ありませんでしたが,何か問題ありましたか?
他のディレクトリでpremakeし,そのプロジェクトファイルでビルドできるかどうかは考慮していません。もちろん,ビルドさえできればどこでもいいと思いますが,ここでは説明のため一箇所に固定しています。
でむ
でむさん、はじめまして
Win環境で試しています。
robosimを展開して、premakeを実行するのはmybuildではなく、
展開先のrobosimディレクトリですよね。コマンドの意味を理解していけば、
気がつくのですが、ちょっと悩みました。
これからもよろしくお願いします。
Highさん,
おかしいですね。ビルド中にエラーは出ないはずですが… 少なくとも私が試した時(Windows Vista Business+gcc)はそのような問題は起きませんでした。ダウンロード,解凍,あるいはpremakeのどこかで失敗した可能性があります。
対処方法になりますが,alloca()の代わりにmalloc()を使ってみればどうでしょうか?
ode/src/config.hの46行目
/* #define dUSE_MALLOC_FOR_ALLOCA */
のコメントを外してビルドし直してみてください。
これでだめなら,インストールを注意深く初めからやり直した方が時間を節約できると思います。
でむ
codeblocksのインストールを完了し、日本語化を行い
ODEのビルド 中にコンパイルエラーで以下のビルドメッセージを出して
止まりました
||=== ode, DebugDoubleLib ===|
C:\ode-0.10.1\ode\src\box.cpp||In function `int dBoxBox(const dReal*, const |
C:\ode-0.10.1\ode\src\box.cpp|389|warning: division by zero in `|
C:\ode-0.10.1\ode\src\collision_cylinder_box.cpp||In member function `void |
C:\ode-0.10.1\ode\src\collision_cylinder_box.cpp|176|warning: division by zero |
C:\ode-0.10.1\ode\src\collision_cylinder_box.cpp||In member function `int |
C:\ode-0.10.1\ode\src\collision_cylinder_box.cpp|338|warning: division by zero |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp||In member function `bool |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp|283|warning: division by |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp|284|warning: division by |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp||In member function `void |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp|867|warning: division by |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp||In function `int |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp|1073|`alloca’ undeclared |
C:\ode-0.10.1\ode\src\collision_cylinder_trimesh.cpp|1073|(Each undeclared |
||=== Build finished: 2 個のエラー、 6 個の警告 ===|
dALLOCA16 マクロはode\src\util.h 55行目 で定義されいて、
この中のalloca の定義が見えていないようです
何処を直せばよいのでしょうか?
悩める初心者さん,
つくば市へ出張していて返事が遅れました.
解決して何よりですが,おかしいですね.
codeblocks-8.02mingw-setup.exeでインストールしたら,mingwのgcc,g++,gdbがインストールされるので,別にmingwをインストール必要はありません.
でむ
無事コンパイルできました。
mingwをインストールしたら正常に起動しました。
お手数おかけしまして、すいませんでした。
追記です。
codeBlocksを使用する際、予めMingwをインストールしてなければならないのでしょうか?今しようしているPCはMingwをインストールしてません。
でむさんへ、
最初からcodeblocks-8.02mingw-setup.exeの方をインストールしていました。
ただ、最初にcbpファイルが開けないとき、1度アンインストールしてから再インストールしましたが、なぜか最初から日本語が設定されており、設定が何かしらの方法で保存されており、その影響ではないかと思い始めてきました。
無事コンパイルできたらファーラムに書き込みます。
悩める初心者さん,
パソコンを更新したのでWindows VistaでCode::Blocksを再インストールをしましたが問題なくできました.
http://demura.net/wordpress/9ode/523.html
上のURLに詳しいインストールの手順があります.Code::Blocksをダウンロードするときにcodeblocks-8.02mingw-setup.exeではなく,間違ってcodeblocks-8.02setup.exeをインストールしていませんか?
確認お願いします.
でむ
他のプログラムでコンパイルしても同じ現象が起きてしまいます。
また、インストールも書き込み前に何度も行い、今も行いましたがやはり
同じ結果でした。すこし自分でcodeBlocksについてけんさくしてみます。
悩める初心者さん,
コンパイラが無効なようですね.
試しに簡単なC言語のプログラムをコンパイルできるか試してください.
できない場合は,Code::Blocksのインストールが失敗です.もう一度,注意深くCode::Blocksをインストールしてみてください.
結果を教えてください.
でむ
返答ありがとうございました。
再インストールで無事開くことができましたが
今度はビルドがうまくいきません
libフォルダができず、ビルドログも以下のようになって
成功したか失敗したかもわかりません。
“ode – DebugDoubleLib” uses an invalid compiler. Skipping…
“drawstuff – DebugDoubleLib” uses an invalid compiler. Skipping…
・
・
・
“demo_trimesh – DebugDoubleLib” uses an invalid compiler. Skipping…
“tests – DebugDoubleLib” uses an invalid compiler. Skipping…
Nothing to be done.
なにとぞよろしくお願いします
悩める初心者さん,
お久しぶりですね.
さて,Code::blocksのプラグイン(L)→プラグインの管理(P)…で「プラグインの管理」画面を開き,TitleのCompilerがEnabled 「はい」になっているか確認してください.
「いいえ」になっている場合は「有効(E)」のボタンをクリックして有効化してみてください.
TitleにCompilerがなければ何らかの原因でインストールが失敗したと考えられます.Code::blocksをインストールし直した方が早いと思います.
でむ
追記です。
開けないファイルはcbpファイルが開けません。
試しにつぎの説明になる既存のファイルを実行するところで、
pro1-1の場合も実験しましたがやはりcbpファイルが、
コンパイラプラグインの関係で開けませんでした。
でむさん、おしさしぶりです。
ただ今、code::blocks、ODEのインストールが終わり
デモプログラムを実行しようとworkspaceを開いたところ
「コンパイラプラグインを無効にするのは推奨しません。
プロジェクトを開く際に、最初にコンパイラプラグインを再度有効
にする必要がある」というエラーがでてしまい、ファイルが開けません
ログボックスを消しても再度でてえしまうため再起動するしかありません。
こういったエラーは設定でなおせるのでしょうか?
教えていただけると助かります。