2011-01-05 77 views
14

OS:Fedora 14的編譯問題的gtkmm

編譯器:克++

我從存儲庫經由蔭安裝gtkmm24-devel的(GCC)4.5.1 20100924(紅帽4.5.1-4)。爲確保安裝按計劃進行,我決定嘗試頁面上的其中一個示例。

#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到我的庫搜索。沒有bueno,g ++仍然無法找到它!

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

我再嘗試包括gtkmm的使用#include <gtkmm-2.4/gtkmm.h>並重新編譯,另一個錯誤! :(

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

感謝您的閱讀

+1

這不是一個 「連接」 的錯誤。這是一個「編譯器」錯誤。有很大的不同。 – chrisaycock 2011-01-05 22:12:23

+0

對不起,我在系統編程方面還是個新手。我將添加我的編譯器和版本。 – t3hb4tman 2011-01-05 22:15:31

回答

22

簡短的回答

使用 'pkg配置的gtkmm-2.4 --cflags' 的輸出包括庫鏈接路徑和 'pkg配置的gtkmm-2.4 --libs'。

龍答案

它說,它無法找到gtkmm.h,沒問題,我剛纔忘了鏈接庫。

建立一個C/C++程序分兩步完成。首先編譯源文件,輸出目標文件;然後將這些目標文件鏈接在一起。你得到的錯誤來自編譯步驟。

在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 2011-12-22 20:13:36

0

這些步驟通常有助於解決這個問題。

  • 在電腦中搜尋glibmm.h
    • 如果發現 - 其添加目錄到包括路徑列表
    • 如果找不到 - Google for glibmm.h並找出它包含在哪個庫中,您會發現這種情況是(驚喜!)glibmm。使用你的包管理器來安裝它。

的問題,如在評論所指出的,是一個編譯錯誤和編譯器爭論丟失(頭)文件。上述步驟可以找到丟失文件的位置,或者幫助您安裝頭文件所屬的庫。

+0

我已經安裝了庫並且包含它的路徑(/ usr/lib),但錯誤仍然存​​在。 :( 看來,安裝這些庫只給我共享對象(.so)。我有與Boost相同的問題,並經過一段時間無法找出它採取從源(編譯它然後給我提供我需要的正確標題),我希望避免這種情況,並掌握我究竟做錯了什麼,但是如果有必要,我會這樣做。 – t3hb4tman 2011-01-05 22:39:16

+0

請注意,您必須安裝開發版這些庫通常在軟件包名稱中標有-dev擴展名 – 2011-01-05 22:53:52

+0

軟件包glibmm24-devel-2.24.2-1.fc14.1.i686已經安裝並且最新版本 – t3hb4tman 2011-01-05 23:00:27