2011-01-05 8 views
14

OSをコンパイル:Fedoraの14問題gtkmmの

コンパイラ:G ++(GCC)4.5.1 20100924(レッドハット4.5.1-4)

IはYUMを介してリポジトリからgtkmm24-develのインストール。インストールが計画どおりに行われたかどうかを確認するために、私はこのページの例の1つを試してみることにしました。

#include <gtkmm.h> 

int main(int argc, char *argv[]) { 
    Gtk::Main kit(argc, argv); 
    Gtk::Window window; 
    Gtk::Main::run(window); 
    return 0; 
} 

私はこの例を実行しました。 gtkmm.hが見つかりませんでした。問題はありません。ライブラリをリンクするのを忘れてしまいました。 Eclipseを使って/usr/include/gtkmm-2.4をライブラリ検索に追加しました。ブエノ、g ++はまだそれを見つけることができません!

fatal error: gtkmm.h: No such file or directory 

私はその後#include <gtkmm-2.4/gtkmm.h>を使用することによってgtkmmのを含めるようにしようとして再コンパイルし、別のエラー!読書のための:(

/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory 

おかげ

+1

を。これは「コンパイラ」エラーです。大きな違いがあります。 – chrisaycock

+0

申し訳ありませんが、私はシステムプログラミングに関してはまだ初心者です。コンパイラとバージョンを追加します。 – t3hb4tman

答えて

22

短い答え

のための 'PKG-config設定のgtkmm-2.4 --cflags' の出力を使用してパスとリンクするライブラリのための 'PKG-config設定のgtkmm-2.4 --libs' を含んでいます。

長い答えは

それは私がちょうどライブラリをリンクするのを忘れて、それはgtkmm.h、何の問題を見つけることができなかったと述べました。

C/C++プログラムのビルドは2つのステップで行われます。最初にソースファイルをコンパイルし、オブジェクトファイルを出力します。オブジェクトファイルがリンクされます。あなたが得ているエラーは、コンパイルのステップから来ています。

Linuxでは、ほとんどのライブラリにpkgconfigファイルが付属しているため、他のプログラムがライブラリを使いやすくしています。 gtkmmには独自のpkgconfigファイルも付属しています。

インクルードパスに/usr/include/gtkmm-2.4を手動で指定しようとしています。これは間違っています。代わりに、pkgconfigの出力を使用して、ヘッダーファイルの場所を特定します。、gtkmmのために必要なすべてを含むディレクトリを取得するには、次のコマンドを使用するには:リンクについて

pkg-config gtkmm-2.4 --cflags 

を、あなたとリンクする必要があるライブラリを取得するには、次のpkgconfigコマンドを使用します。

pkg-config gtkmm-2.4 --libs 

あなたがテストすることができますg ++を直接呼び出すことでコマンドライン上に表示されます。

g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs` 

詳細については、gtkmmのドキュメントを参照してください: "リンク" エラーではありませんhttp://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en

+1

こんにちはkavel。私のプロジェクトをコンパイルするのに役立つあなたの答えが見つかりましたが、私はまだですリンクに問題があります。あなたは私の質問(http://stackoverflow.com/questions/8586006/linking-gtkmm-libraries-in-visual-studio)で私を助けてくれるでしょうか?どうもありがとう! – wrongusername

0

これらの手順は、通常、この問題の解決に役立つ:見つかった場合

  • がglibmm.h
    • のためのあなたのコンピュータを検索する - にそのディレクトリを追加パスリストを含める
    • 見つからない場合 - Google for glibmm.hとそれがどのライブラリに含まれているかを調べます。この場合それは(驚き!)glibmmです。パッケージマネージャを使用してインストールします。

問題は、コメント欄で述べたように、コンパイラエラーであり、コンパイラは欠落(ヘッダ)ファイルについて議論されています。上記で説明した手順では、不足しているファイルの場所を見つけるか、ヘッダーファイルが属するライブラリをインストールするのに役立ちます。

+0

私はすでにライブラリをインストールしており、そのパス(/ usr/lib)はインクルードされていますが、エラーはそのままです。 :( これらのライブラリをインストールすると、共有オブジェクト(.so)のみが表示されるようですが、私はBoostと同じ問題を抱えていましたが、ソースからコンパイルすることに気づいていないそれから私が必要とする適切なヘッダーを提供しました)、私はそれを避けて正確に私が間違っていることを理解することを望んでいましたが、必要ならば私はそれを行います。 – t3hb4tman

+0

これらのパッケージには、通常、パッケージ名に-dev拡張子が付きます。 –

+0

パッケージglibmm24-devel-2.24.2-1.fc14.1.i686がインストール済みで最新バージョン – t3hb4tman