Всем Доброго времени суток!
Стоит задача собрать Qt без Gui на сервере и, для начала, написать простейшую программу.
ОС: FreeBSD 7.2 без графической оболочки.
Целевое приложение имеет клиент-серверную архитектуру. Проблема, на данный момент, в серверной части, основной задачей которой является передача клиентам, по их запросу, файлов изображений и видео (возможно придется организовать потоковое вещание видеоконтента вебкамер в реальном времени). Соответственно необходимы будут библиотеки для роботы с сетью, SQL, XML...
Собрать Qt у меня вроде как получилось (
http://www.prog.org.ru/index.php?topic=8428.msg46296;topicseen#msg46296) , а вот запустить банальный "Hello World" - не очень. При запуске написанного приложения вместо вывода "Hello World!" пропадает приглашение командной оболочки и я могу вводить любые символы, нажимаю Ентер, а реакции никакой. Только после прерывания программы вновь появляется приглашение командной оболочки.
Дело происходило так:
cd ~/downloads/# uncompress the archive
gunzip qt-everywhere-opensource-src-4.7.0.tar.gz # unpack it
tar xvf qt-everywhere-opensource-src-4.7.0.tar #configure without gui
[user1@server] ~/downloads/qt-everywhere-opensource-src-4.7.0]$ ./configure -no-gui#...
Qt is now configured for building. Just run 'gmake'.
Once everything is built, you must run 'gmake install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.7.0
To reconfigure, run 'gmake confclean' and 'configure'.
[user1@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/tools/moc]$ gmake#................................................
/usr/bin/ld: cannot find -lbootstrap
gmake: *** [../../../bin/moc] Error 1#пробую
[user1@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/corelib]$ gmake#в результате
#......
gmake: /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/bin/moc: Command not found
gmake: *** [.moc/release-shared/moc_qabstractanimation.cpp] Error 127[user1@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap]$ gmake#.....
#чтото получилось
[user1@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/tools/moc]$ gmakeg++ -Wl,-rpath-link,/usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/lib -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.7.0/lib -Wl,-rpath,/usr/local/Trolltech/Qt-4.7.0/lib -o ../../../bin/moc release-shared/moc.o release-shared/preprocessor.o release-shared/generator.o release-shared/parser.o release-shared/token.o release-shared/main.o -L/usr/local/lib -L/usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap -lbootstrap -L/usr/local/lib -lz -lz
(test -z "../../../bin/" || cd "../../../bin/" ; targ=`basename ../../../bin/moc`; objcopy --only-keep-debug "$targ" "$targ.debug" && objcopy --strip-debug "$targ" && objcopy --add-gnu-debuglink="$targ.debug" "$targ" && chmod -x "$targ.debug" ) ;
[user1@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/corelib]$ gmake#.....
[user1@server /usr/local]$ sudo -s[root@server ~/downloads/qt-everywhere-opensource-src-4.7.0/src/corelib]$ gmake install#все поставилось
#Дальше ставлю все необходимые библиотеки отдельно:
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/network]$ gmake
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/network]$ gmake install
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/sql]# gmake
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/sql]# gmake install
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/xml]# gmake
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/xml]# gmake install
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/dbus]# gmake
[root@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0/src/dbus]# gmake install#продолжаем настройку
[user1@server /usr/home/user1/downloads/qt-everywhere-opensource-src-4.7.0]$ sudo gmake install_mkspecs
[user1@server ~]$ sudo cp downloads/qt-everywhere-opensource-src-4.7.0/bin/qmake /usr/local/Trolltech/Qt-4.7.0/bin/
[user1@server ~]$ sudo cp downloads/qt-everywhere-opensource-src-4.7.0/bin/findtr /usr/local/Trolltech/Qt-4.7.0/bin/
[user1@server ~]$ sudo cp downloads/qt-everywhere-opensource-src-4.7.0/bin/syncqt /usr/local/Trolltech/Qt-4.7.0/bin/#Изменяем переменную PATH, для этого изменяем файл .profile из моей домашней директории
[user1@server ~]$ vim .profile#Дописываем в файл
# …
PATH=/usr/local/Trolltech/Qt-4.7.0/bin:$PATH
export PATH
#…
Перезапускаем bash и пробуем запустить утилиту qmake без указания ее полного пути [user1@server ~/qt/helloworld]$ qmake helloworld.pro#Ура заработало!!!!
main.cpp:
#include <QtCore/QCoreApplication>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::cout << "Hello World";
return a.exec();
}
Helloworld.pro:
#-------------------------------------------------
#
# Project created by QtCreator 2010-10-11T09:33:03
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = helloworld
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
#Собираем и запускаем проект:
[user1@server ~/qt/helloworld]$ qmake helloworld.pro
[user1@server ~/qt/helloworld]$ make
[user1@server ~/qt/helloworld]$ ./helloworld#И в результате имею ранее описанный эфект(((
Подскажите пожалуйста, может в чем то я был неправ?! Я вообще планирую делать этот проект из-под Винды а потом исходники копировать и компилировать на сервере... Я же так понимаю, что при помощи Qt, установленной на Windows, не удастся собрать приложение для FreeBSD?!