Warsztat - Programowanie gier

Lipiec 30, 2010, 17:38:42 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Kompilacja Ogre + CEGUI w niestandardowej konfiguracji  (Przeczytany 426 razy)
vshader
Jr. Member
**

wiadomości: 66


Zobacz profil WWW
« : Czerwiec 30, 2009, 17:57:02 »

Witam
Kompiluję sobie silnik Ogre (v. 1.6.2), pod Linuksem rzecz jasna (GCC v.4.4.0) Smiley. Zdecydowałem się na użycie STLport, co pociągnęło za sobą rekompilację paru powiązanych bibliotek, m.in. CEGUI (v.0.6.2). Kompilacja OgreMain i większości komponentów przebiega prawidłowo, sypie się jednak podczas kompilacji samplesów korzystających z CEGUI.
Przykładowo, demo OceanDemo wyrzuca:
Kod:
Samples/OceanDemo/src/OceanDemo.cpp:1237: undefined reference to `CEGUI::operator+(CEGUI::String const&, stlp_std::basic_string<char, stlp_std::char_traits<char>, stlp_std::allocator<char> > const&)'
(...)
Jest to jak widać związane z STLport. Make próbuje linkować z wersją CEGUI zainstalowaną w systemie wykorzystującą libstdc++ zamiast moją wykorzystującą STLport.
Wersję CEGUI przy konfiguracji OGRE'a ustawiłem tak:
Kod:
export CEGUI_CFLAGS="-I/home/vshader/Programming/Libs/CEGUI/include"
export CEGUI_LIBS="-L/home/vshader/Programming/Libs/CEGUI/lib -lCEGUIBase"
Jak widać, opcja -lCEGUIBase po definicji katalogu powinna (tak mi się wydaje) odnosić się do tej we wskazanym katalogu. Tak się jednak nie dzieje.
W konsoli pojawia się takie coś:
Kod:
libtool: link: g++ -g -O2 -fPIC -o .libs/OceanDemo MaterialControls.o OceanDemo.o  -L/mnt/shared2/vshader/Programming/Libs/ogre-1.6.2/OgreMain/src -L/mnt/shared2/vshader/Programming/Libs/ogre-1.6.2/Samples/Common/CEGUIRenderer/src /mnt/shared2/vshader/Programming/Libs/ogre-1.6.2/OgreMain/src/.libs/libOgreMain.so -L/home/vshader/Programming/Libs/STLport/lib /usr/lib64/libfreetype.so /usr/lib64/libzzip.so -lXaw /usr/lib64/libXt.so /usr/lib64/libSM.so /usr/lib64/libICE.so -L/home/vshader/Programming/Libs/CEGUI/lib /usr/lib64/libCEGUIBase.so /mnt/shared2/vshader/Programming/Libs/ogre-1.6.2/Samples/Common/CEGUIRenderer/src/.libs/libCEGUIOgreRenderer.so -lstlport -L/usr/local/lib /usr/local/lib/libOIS.so -L/usr/X11R6/lib /usr/lib64/libX11.so /usr/lib64/libxcb.so /usr/lib64/libXau.so /usr/lib64/libXdmcp.so -lCg -lfreeimage -lpthread -lz -lm -ldl -Wl,-rpath -Wl,/usr/local/lib
Konkretnie to:
Kod:
-L/home/vshader/Programming/Libs/CEGUI/lib /usr/lib64/libCEGUIBase.so
Nie mam pojęcia skąd się tu bierze ścieżka bezwględna do /usr/lib64. Tam znajduje się biblioteka CEGUI korzystający z libstdc++. Nie mam pojęcia dlaczego make zamienia moją definicję na swoją ścieżkę absolutną. Jeżeli sam wywołam tę linię, tzn. dając w konsoli
Kod:
g++ (...) -L/home/vshader/Programming/Libs/CEGUI/lib -lCEGUIBase (...)
kod kompiluje się bez żadnych błędów.

Pozdrawiam

EDIT: OK, problem rozwiazany. Winna okazała się opcja -lCEGUIBase. Okazuje się że make/g++ rozwija tą opcję w poszukiwaniu pierwszej pasującej biblioteki w systemie. Rozwiązaniem okazało się:
Kod:
export CEGUI_LIBS="-L/home/vshader/Programming/Libs/CEGUI/lib /home/vshader/Programming/Libs/CEGUI/lib/libCEGUIBase.so"
Nie wiem czy -L jest wtedy potrzebne, zostawiłem tylko na wszelki wypadek Smiley
« Ostatnia zmiana: Lipiec 01, 2009, 03:28:43 wysłane przez vshader » Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC