Название: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: rain107 от Октябрь 15, 2010, 02:32 Всем Доброго времени суток!
Стоит задача собрать Qt без Gui на сервере и, для начала, написать простейшую программу. ОС: FreeBSD 7.2 без графической оболочки. Целевое приложение имеет клиент-серверную архитектуру. Проблема, на данный момент, в серверной части, основной задачей которой является передача клиентам, по их запросу, файлов изображений и видео (возможно придется организовать потоковое вещание видеоконтента вебкамер в реальном времени). Соответственно необходимы будут библиотеки для роботы с сетью, SQL, XML... Собрать Qt у меня вроде как получилось (http://www.prog.org.ru/index.php?topic=8428.msg46296;topicseen#msg46296 (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]$ gmake g++ -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> Helloworld.pro: Код: #------------------------------------------------- #Собираем и запускаем проект: [user1@server ~/qt/helloworld]$ qmake helloworld.pro [user1@server ~/qt/helloworld]$ make [user1@server ~/qt/helloworld]$ ./helloworld #И в результате имею ранее описанный эфект((( Подскажите пожалуйста, может в чем то я был неправ?! Я вообще планирую делать этот проект из-под Винды а потом исходники копировать и компилировать на сервере... Я же так понимаю, что при помощи Qt, установленной на Windows, не удастся собрать приложение для FreeBSD?! Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: BRE от Октябрь 15, 2010, 07:52 Ну как бы программа делает ровно то, что ты написал. :)
Поток std::cout буферизирован и данные из этого буфера не выталкиваются для того чтобы они вывелись на экран, а потом запускается цикл обработки событий, который никем не завершается. Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: rain107 от Октябрь 15, 2010, 09:16 А как же тогда вывести на экран строку ???
Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: merke от Октябрь 15, 2010, 09:55 #include <QtCore/QCoreApplication>
#include <iostream> #include <conio> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::cout << "Hello World"; getch(); } Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: Sahab от Октябрь 15, 2010, 10:04 std::flush
Цитировать QCoreApplication a(argc, argv); std::cout << "Hello World"; getch(); Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: Sahab от Октябрь 15, 2010, 10:08 Цитировать при помощи Qt не удастся собрать приложение для FreeBSD?! ?qt ничего не собирает... а по сути ставь се putty - коннект на сервер - и собирай... Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: rain107 от Октябрь 15, 2010, 10:12 Цитировать при помощи Qt не удастся собрать приложение для FreeBSD?! ?qt ничего не собирает... а по сути ставь се putty - коннект на сервер - и собирай... Именно так и работаю... Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: BRE от Октябрь 15, 2010, 10:57 А как же тогда вывести на экран строку ??? Почитай про std::endl;Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: rain107 от Октябрь 15, 2010, 14:30 А как же тогда вывести на экран строку ??? Почитай про std::endl;А при чем здесь символ перевода строки, если проблема в том, что содержимое буфера не выводится в командной оболочке bash при использовании потока вывода std::cout?! Ну как бы программа делает ровно то, что ты написал. :) Поток std::cout буферизирован и данные из этого буфера не выталкиваются для того чтобы они вывелись на экран, а потом запускается цикл обработки событий, который никем не завершается. Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: BRE от Октябрь 15, 2010, 15:13 А при чем здесь символ перевода строки, если проблема в том, что содержимое буфера не выводится в командной оболочке bash при использовании потока вывода std::cout?! А std::endl и данные из буфера выталкивает.Название: Re: Сборка Qt на сервере FreeBSD без X11 + "Hello World!" Отправлено: rain107 от Октябрь 15, 2010, 15:26 А при чем здесь символ перевода строки, если проблема в том, что содержимое буфера не выводится в командной оболочке bash при использовании потока вывода std::cout?! А std::endl и данные из буфера выталкивает.;D От блин!!! Вот же дурацкая голова!!! А я столько перемучался))) BRE, Большое тебе СПАСИБО!!! |