0

だから私は最近WindowsにうんざりしてLinuxMintをインストールしました。Code::Blocksにあるプロジェクトをビルドしようとしています。Code :: Blocksをインストールしましたが、glew(および他のいくつかのライブラリ)が必要です。ソフトウェアマネージャーで見つけてインストールしました。ヘッダーファイルを見つけてインクルードすることができました。しかし、次のステップは比較的簡単でインターネット全体にあるべきだと思いますが、(おそらく適切な用語がないために)私はまだ答えを見つけることができませんでした。

システム上のファイルを見つけて、各ライブラリに手動でリンクする必要がありますか?これは私がWindowsで行ったことですが、バイナリをダウンロードして、それらがどこにあるかを知っていました。ソフトウェアマネージャーから1つのライブラリを見つけて手動でリンクしましたが、間違った方法で行っているように感じます。システムに「インストール」されているので、リンクする簡単な方法はありますか?

4

3 に答える 3

3

リンカ「-l」と「-L」には2つのフラグを使用する必要があります。これらのフラグは、プロジェクトのプロパティのどこかに設定できます。

最初の「-l」は、リンカーに特定のライブラリとリンクするように指示します。たとえば、glewは、おそらく/ usr / libにlibglew.soという名前のファイルがあり、プログラムを「-lglew」フラグでリンクすると、glewライブラリにリンクされます。リンカは、いくつかの標準的な場所(/ usr / lib、/ usr / local / lib、およびいくつかの追加の場所)でライブラリを検索します。非標準の場所にライブラリがある場合は、「-L」フラグを使用してこれらのディレクトリを指定します。

多くのLinuxディストリビューションは、ライブラリを備えた2種類のパッケージを提供します。通常のパッケージにはランタイムのみが含まれ、develパッケージ(通常はdevまたはdevelの接頭辞または接尾辞が付けられます)にはヘッダーファイルと開発バージョンのライブラリが含まれます。

于 2013-02-22T16:15:10.647 に答える
1

ビルドシステムを使用してください、ルーク!* nixの世界でソフトウェアを開発/ビルドする一般的な方法は、次の3つのステップです。

  • 構成段階-smthを構築する前に、ソフトウェアを構築する環境を理解する必要があります...必要なものはすべてインストールされています...コンパイル段階(コンパイルの数時間後)では良くありませんあなた(またはあなたのソフトウェアを作成したユーザー)はエラーを受け取りました:「xxx.h」を#includeできません。最も人気のあるビルドシステムは次のとおりです。cmake 、 autotoolsの後の私のお気に入り。youtも試してみるsconsかもしれませんし、クレイジーな(b)jamかもしれません...
  • コンパイル段階-通常はmakeすべて
  • インストール段階-ビルドしたばかりのソフトウェアをシステムにデプロイします。または他の方法:ターゲットディストリビューションのパッケージをビルドする(.deb / .rpm /&etc)

テストスクリプトを使用した構成段階で(さまざまなユースケースに対応するスクリプトがたくさんあることを心配しないでください)、必要なすべてのヘッダー/ライブラリ/プログラム/コンパイラオプション/パッケージをコンパイルするために必要なものをすべて見つけることができます...そしてはい:しないでくださいMakefile(またはmakeバイナリに使用するもの)でハードコードされたパスを使用する

于 2013-02-22T16:04:37.083 に答える
0

この質問への答えは、実際に何を達成したいかによって異なります。自分でアプリを作成したい場合は、makefileまたはコードエディター設定にライブラリへのパスを書き込むことができます。Linuxディストリビューションパッケージマネージャーによってライブラリがインストールされているかのように、それを行う必要はないかもしれません。通常、ヘッダーは/ usr / includeに、ライブラリは/ usr/libまたは/urs/ lib64などに移動します。この場所は標準であり、必要ありません。それらを明示的に指定します。とにかく、リンクしたいライブラリを指定する必要があります。他の人が作成できるアプリケーションを作成したい場合、またはcmakeのようなものを使用して多くの異なる構成/環境で自分が作成できるアプリケーションを作成する場合は、非常に役立ちます。

于 2013-02-22T16:23:43.167 に答える