2011-01-05 13 views
14

OS: Fedora 14Problemy z kompilacją gtkmm

Compiler: g ++ (GCC) 4.5.1 20.100.924 (Red Hat 4.5.1-4)

zainstalowałem gtkmm24-devel z repozytorium poprzez yum. Aby upewnić się, że instalacja przebiegła zgodnie z planem, postanowiłem wypróbować jeden z przykładów na stronie.

#include <gtkmm.h> 

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

Uruchomiłem przykład i, hej! Powiedział, że nie może znaleźć gtkmm.h, nie ma problemu, po prostu zapomniałem połączyć bibliotekę. Dodałem /usr/include/gtkmm-2.4 do mojego przeszukiwania biblioteki przez Eclipse. Nie bueno, g ++ nadal nie może go znaleźć!

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

I spróbuj to gtkmm za pomocą #include <gtkmm-2.4/gtkmm.h> i rekompilacji, kolejny błąd! :(

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

Dziękuję za przeczytanie

+1

to nie jest "łączenie" błąd. To błąd "kompilatora". Jest duża różnica. – chrisaycock

+0

Przykro mi, wciąż jestem nowicjuszem jeśli chodzi o programowanie systemów. Dodam mój kompilator i wersję. – t3hb4tman

Odpowiedz

22

Krótka odpowiedź

Użyj wyjście 'pkg-config gtkmm-2.4 --cflags' za to ścieżki i 'pkg-config gtkmm-2,4 --libs' dla biblioteki połączyć.

Długa odpowiedź

on powiedział, że nie mógł znaleźć gtkmm.h, nie ma problemu, po prostu zapomniał połączyć bibliotekę.

Budowanie programu C/C++ odbywa się w dwóch oddzielnych etapach. Najpierw kompiluje się pliki źródłowe, wyprowadzając pliki obiektów; a następnie pliki obiektów są ze sobą połączone. Błąd, który otrzymujesz, pochodzi z etapu kompilacji.

W systemie Linux większość bibliotek zawiera pliki pkgconfig, które ułatwiają innym programom korzystanie z bibliotek. gtkmm ma również własne pliki pkgconfig.

Próbujesz ręcznie określić /usr/include/gtkmm-2.4 dla ścieżki include; To jest źle. Zamiast tego użyj wyjścia pkgconfig, aby dowiedzieć się, gdzie znajdują się pliki nagłówkowe.Aby uzyskać wszystkie katalogi zawierają potrzebne do gtkmm, należy użyć następującego polecenia:

pkg-config gtkmm-2.4 --cflags 

do łączenia, należy użyć następującego polecenia pkgconfig dostać biblioteki trzeba połączyć z:

pkg-config gtkmm-2.4 --libs 

można przetestować w wierszu poleceń, bezpośrednio wywołując g ++.

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

Aby uzyskać więcej informacji, zobacz docs gtkmm: http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en

+1

Cześć, znalazłem twoją odpowiedź jako bardzo pomocną pomoc w skompilowaniu mojego projektu, ale wciąż jestem problemy z łączeniem. Czy chciałbyś mi pomóc na moje pytanie tutaj (http://stackoverflow.com/questions/8586006/linking-gtkmm-libraries-in-visual-studio)? Wielkie dzięki! – wrongusername

0

Kroki te zazwyczaj pomagają rozwiązać ten problem.

  • wyszukać na komputerze glibmm.h
    • Jeśli znaleziono - dodaj swój katalog na uwzględnij listę ścieżek
    • Jeśli nie zostanie znaleziona - Google for glibmm.h i sprawdź, w której bibliotece się znajduje. Dowiesz się w w tym przypadku to (niespodzianka!) glibmm. Zainstaluj go za pomocą menedżera pakietów.

Problem, jak zauważył w komentarzach, to błąd kompilatora i kompilator kłóci się o brakującym pliku (nagłówek). Kroki, które opisałem powyżej, znajdują położenie brakującego pliku lub pomagają zainstalować bibliotekę, do której należy plik nagłówkowy.

+0

Mam już zainstalowaną bibliotekę i jej ścieżkę (/ usr/lib), ale błąd nadal występuje. :( Wygląda na to, że instalacja tych bibliotek daje mi tylko udostępnione obiekty (.so). Miałem ten sam problem z Boostem i po pewnym czasie nie mogąc go znaleźć, uciekam się do kompilowania go ze źródła (co następnie dostarczyłem mi odpowiednie nagłówki, których potrzebowałem), miałem nadzieję, że uniknę tego i zrozumiem, co dokładnie robię źle, ale jeśli to konieczne, zrobię to. – t3hb4tman

+0

Pamiętaj, że musisz zainstalować wersje rozwojowe biblioteki do pobierania plików nagłówkowych Zazwyczaj są oznaczone rozszerzeniem -dev w nazwie pakietu –

+0

Pakiet glibmm24-devel-2.24.2-1.fc14.1.i686 już zainstalowany i najnowsza wersja – t3hb4tman

Powiązane problemy