Strona 1 z 1

qt problemy z kompilacją

: 28 marca 2008, 19:04
autor: stanislaw
Witam.

Mam problem z kompilacją programu używającego biblioteki qt. g++ nie znajduje plików nagłówkowych, a jeśli w pliku z kodem podam dokładną ścieżkę do plików nagłówkowych, to linker nie może wszystkiego połączyć. g++ nie rozpoznaje także wyrażenia -lqt. QT zainstalowałem z paczek, (qt4-dev-tools). Zgodnie z załączoną dokumentacją dodałem zmienną powłoki PATH. Próbowałem już wielu kombinacji. Biblioteka jest zainstalowana, ponieważ zainstalowałem jeszcze pakiet Kdevelop i stworzony tam przez konfigurator projekt qt, skompilował się używając makefile. Polecenia uic, albo np.: qmake działają bez problemu.

Czy przyczyną może być to że w systemie jest jednocześnie wersja 3 i 4 qt?

: 29 marca 2008, 08:55
autor: Theq
Uzywasz qmake do generowania makefile'a czy kompilujesz recznie?

Anyway ponizej masz przyklad kompilacji i linkowania dzieki wygenerowanemu przez qmake makefile'owi. Moze cie to jakos naprowadzi.

Kod: Zaznacz cały

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o foobar.o foobar.cpp

.
.

g++ -Wl,--no-undefined -o Foobar foomain.o foobarform.o foobar.o moc_foobarform.o    -L/usr/lib -lQtGui -L/usr/lib -L/usr/X11R6/lib -laudio -lXt -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lXext -lX11 -lQtCore -lfontconfig -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread

: 29 marca 2008, 14:50
autor: stanislaw
Serdecznie dziękuję, teraz już działa.

Głównie chodziło mi o kompilację ręczną. W poleceniu dla g++ brakowało:

Kod: Zaznacz cały

-I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I.
Z tymi parametrami kompilator już wie gdzie szukać odpowiednich plików nagłówkowych.

A linker potrzebuje nie -l qt, ale -lQtCore, -lQtGui (w zależności od użytych klas). Ogólnie lepiej jest chyba używać qmake.