105

GLFW3

昨夜、ソースから Linux 用の GLFW 3 パッケージをビルドしようと遅くまで働いていました。このプロセスには、CMake に慣れていないこともあり、GLFW に慣れていないこともあり、合計で約 3 時間かかりました。

この投稿が昨日の困難からあなたを救ってくれることを願っています! 短い記事を書いて、うまくいけばあなたの命を数時間救うべきだと思いました...

#glfw IRC チャンネルの「urraka」、「b6」、「niklas」のおかげで、glfw バージョン 3.0.1 を動作させることができました。

glfw3、特に CMake での設定に関する Web 上のドキュメントはあまりないため、これは些細なプロセスではないことがわかります (確かに私にとってはそうではありません。私は専門家ではありません)。

これを質問と回答のセクションに分割するように依頼されたので、それを行いました。回答の部分は以下のとおりです。

あなたは GLFW のメンテナーですか、それとも GLFW チームのメンバーですか?

GLFW3 のメンテナーがこれを見たら、「Windows、Mac OS X、Linux での GLFW3 のセットアップ」セクションをあなたのウェブサイトに追加してください! GLFW を使用してプログラムを作成するのは非常に簡単です。オンライン ドキュメントは非常に優れており、利用可能なすべてのクラスとモジュールを簡単に調べるだけですぐに使用できるからです。ここに掲載されているテスト プロジェクトの例も非常に優れています。私が見つけた 2 つの主な問題は、1 つ目はシステムに GLFW3 をセットアップする方法、2 つ目は GLFW3 プロジェクトをビルドする方法です。これら 2 つのことは、専門家ではない人にとっては十分に明確ではないかもしれません。

編集

今日 (日付: 2014-01-14) ざっと見てみると、GLFW の Web サイトは、私が最後に見たときから大幅に変更されているように見え、GLFW のコンパイルと GLFW を使用したプログラムの構築に関するセクションが新しく追加されました。

4

9 に答える 9

140

ステップ 1: CMAKE を使用してシステムに GLFW 3 をインストールする

このインストールでは、KUbuntu 13.04、64 ビットを使用していました。

最初のステップは、おそらくこのリンクを使用して、 www.glfw.orgから最新バージョンをダウンロードすることです (将来のバージョンも同様の方法で動作すると仮定します) 。

次のステップは、アーカイブを抽出し、ターミナルを開くことです。cdglfw-3.XX ディレクトリに移動して実行cmake -G "Unix Makefiles"するには、昇格された特権が必要な場合があり、最初にビルドの依存関係をインストールする必要がある場合もあります。これを行うには、私が使用したように、手動で試しsudo apt-get build-dep glfw sudo apt-get build-dep glfw3 ください ... pthreadライブラリなど、必要な他のライブラリがあるかもしれません...どうやら私はすでにそれらを持っていました。(以下の g++ リンカー ステージに指定された -l オプションを参照してください。)sudo apt-get install cmake xorg-dev libglu1-mesa-dev

makeこれで、入力してからを入力できます。make installおそらく最初に入力する必要がありますsudo

わかりました。最後の 3 つの CMake ステージで詳細な出力が得られ、何がビルドされたか、またはどこに配置されたかがわかります。(/usr/includeたとえば、 で。)

ステップ 2: テスト プログラムを作成してコンパイルする

次のステップは、vim ("what?! vim?!" と言う) または好みの IDE/テキスト エディターを起動することです... 私は KUbuntu 13.04 を使用しているため、vim を使用せず、Kate を使用しました...とにかく、ここ(ページの下部)からテストプログラムをダウンロードまたはコピーして保存し、終了します。

次を使用してコンパイルしますg++ -std=c++11 -c main.cpp-c++ 11が必要かどうかはわかりませんがnullptr、私は必要でした... gccをバージョン4.7、または次のバージョン4.8にアップグレードする必要があるかもしれません...その情報はこちら.

手でプログラムを入力したり、「巧妙すぎる」ことを試みて何かがうまくいかなかった場合は、エラーを修正してください...そして、このモンスターを使用してリンクしてください! g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXiご覧のとおり、「ビルド依存関係のインストール」の部分で、GL、GLU、X11 Xxf86vm (何であれ) Xrandr posix-thread および Xi (それが何であれ)開発ライブラリもインストールされていることを確認することもできます。グラフィックドライバーも更新してください。GLFW 3 には OpenGL バージョン 3 以降が必要かもしれません。おそらく誰かがそれを確認できますか?-ldl -lXinerama -lXcursor未定義の参照を取得している場合は、リンカー オプションを追加して正しく動作させる必要がある場合もありますdlclose(@ user2255242 へのクレジット)。

そして、はい、本当にたくさん-lの が必要でした!

ステップ 3: これで終わりです。よい一日を!

願わくば、この情報が正しく、すべてがうまくいき、GLFW テスト プログラムの作成を楽しんでいただければ幸いです。また、このガイドが、昨日の私のように苦労していた将来の何人かの人々を助けたこと、または助けてくれることを願っています!

ちなみにタグはすべて、存在しなかった答えを求めてstackoverflowで検索したものです。(今まで。) もしあなたが私と同じような立場にいたなら、それらがあなたが検索したものであることを願っています.

著者注:

これは良い考えではないかもしれません。この方法 (sudo make install を使用) は、システムに有害な場合があります。(Debian を壊さないでくださいを参照)

理想的には、私または他の誰かが、lib ファイルなどをシステムの既定のディレクトリにインストールするだけでなく、これらは などのパッケージ マネージャーで管理する必要があるため、解決策を提案する必要がありますapt。そうすると、競合が発生し、パッケージ管理システムが壊れる可能性があります。

代替ソリューションについては、新しい「2020年の回答」を参照してください。

于 2013-07-21T12:14:24.773 に答える
2

素晴らしいガイド、ありがとう。ここでほとんどの指示が与えられたので、ほとんどビルドできましたが、エラーが 1 つ残っていました。

/usr/bin/ld: //usr/local/lib/libglfw3.a(glx_context.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

このエラーを検索した後-ldl、コマンド ラインに追加する必要がありました。

g++ main.cpp -lglfw3 -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lGL -lpthread -ldl

次に、「hello GLFW」サンプル アプリをコンパイルしてリンクします。

私はLinuxにかなり慣れていないので、この追加のライブラリが正確に何をするのか完全にはわかりません...リンクエラーを修正する以外は。ただし、上記の投稿でコマンドラインスイッチが表示されます。

于 2015-12-29T18:33:44.117 に答える