Russian Qt Forum

Qt => Вопросы новичков => Тема начата: thechicho от Февраль 15, 2012, 16:24



Название: [РЕШЕНО] как запустить на сервере linux debian
Отправлено: thechicho от Февраль 15, 2012, 16:24
есть консольная прога.
под виндой запускаю с либами
libeay32.dll
libgcc_s_dw2-1.dll
libssl32.dll
mingwm10.dll
QtCore4.dll
QtNetwork4.dll
ssleay32.dll

вопросы:
1. можно под виндой собрать прогу для linux debian? если можно, то как?
2. если я собираю под ubuntu, будет ли работать под debian?
3. аналоги перечисленных либ под linux так же называются? какое у них расширение?
4. прогу собрал, либы нашел. как запустить программу на сервере через ssh? можно в любую папку скопировать, зайти через ssh в эту папку и просто ввести имя программы для запуска? или нужно в какую-то конкретную (конкретные) папку кидать пользовательские программы на linux debian server?
5. или может как-то проще все можно сделать? цель - запустить консольную программу на серваке с дебиан.

хелппп


Название: Re: как запустить на сервере linux debian
Отправлено: Пантер от Февраль 15, 2012, 16:33
1. В виртуалке.
2. От многого зависит.
3. Не так. Расширение .so. Но либы с собой лучше не таскать, а юзать системные.
4. Запускать можно откуда угодно.


Название: Re: как запустить на сервере linux debian
Отправлено: kuzulis от Февраль 15, 2012, 16:35
Цитировать
5. или может как-то проще все можно сделать? цель - запустить консольную программу на серваке с дебиан.
На сервак установить Qt, gcc и т.п., подключиться через ssh, собрать там прогу, запустить прогу. Профит!


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 15, 2012, 17:53
сенкс за ответы!
//2. От многого зависит.
фигово... хотя в принципе можно же на серваке кьют установить и прямо там собрать?
//3. Не так. Расширение .so. Но либы с собой лучше не таскать, а юзать системные.
а как распространять? заставлять каждого устанавливать кьют? проще же кинуть нужные либы с прогой.
//На сервак установить Qt, gcc и т.п., подключиться через ssh, собрать там прогу, запустить прогу. Профит!
ага. только проблема остается как заставить работать на другом серваке без кьют. без установки кьют. подскажи плиз аналоги названия либам, что я выше привел и где их искать? ::)


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 15, 2012, 18:00
еще два вопроса:
1. если я поставлю на серваке своем кьют, соберу там. найду нужные либы с расширением .so. скину все в один каталог. закину на сервер без кьют, прога будет работать?
2. я через ssh (putty) запускаю прогу, она начинает работать и дебажить в консоль. если я закрываю консоль (putty), то прога продолжит работать в фоне или вылетит?!


Название: Re: как запустить на сервере linux debian
Отправлено: sudo от Февраль 15, 2012, 18:07
еще два вопроса:
1. если я поставлю на серваке своем кьют, соберу там. найду нужные либы с расширением .so. скину все в один каталог. закину на сервер без кьют, прога будет работать?
2. я через ssh (putty) запускаю прогу, она начинает работать и дебажить в консоль. если я закрываю консоль (putty), то прога продолжит работать в фоне или вылетит?!

1. Нужные либы тоже зависят от каких-то нужных им либ, поэтому не факт
2. Пиши ./MyProgram &


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 15, 2012, 18:15
// 1. Нужные либы тоже зависят от каких-то нужных им либ, поэтому не факт
 :o но для винды достаточно тех либ для работы, что я выше привел...
// 2. Пиши ./MyProgram &
расскажи плиз поподробнее что за команда или где про нее можно прочесть. сходу не соображу как в гугле найти такую кострукцию.


Название: Re: как запустить на сервере linux debian
Отправлено: sudo от Февраль 15, 2012, 18:19
// 1. Нужные либы тоже зависят от каких-то нужных им либ, поэтому не факт
 :o но для винды достаточно тех либ для работы, что я выше привел...
// 2. Пиши ./MyProgram &
расскажи плиз поподробнее что за команда или где про нее можно прочесть. сходу не соображу как в гугле найти такую кострукцию.

Насчёт либ - я так делать не пробовал, категорично заявлять не могу
& при запуске отвязывает приложение от терминала, в котором оно было запущено. Если просто запустить своё приложение (./MyProgram), то при закрытии терминала завершится и само приложение. Если добавить & (./MyProgram &), приложение от терминала отвяжется и продолжит работать после закрытия терминала


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 15, 2012, 18:33
понял, сенкс.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 19:06
ребят, помогите установить кьют

сделал так apt-get install qt4-dev-tools

пытаюсь собрать прогу
Код:
/usr/include/qt4/QtCore/qstring.h:1003:   instantiated from here
/usr/include/c++/4.3/bits/stl_iterator.h:676: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
/usr/include/c++/4.3/bits/stl_iterator.h:727: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
/usr/include/c++/4.3/bits/stl_iterator.h:731: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
/usr/include/c++/4.3/bits/stl_iterator.h:735: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
/usr/include/c++/4.3/bits/stl_iterator.h:739: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
/usr/include/c++/4.3/bits/stl_iterator.h:743: error: no type named 'difference_type' in 'struct std::iterator_traits<wchar_t*>'
In file included from /usr/include/qt4/QtCore/qdebug.h:42,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/qt4/QtCore/qhash.h:313: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qhash.h:378: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qhash.h:462: error: 'ptrdiff_t' does not name a type
In file included from /usr/include/c++/4.3/map:65,
                 from /usr/include/qt4/QtCore/qmap.h:46,
                 from /usr/include/qt4/QtCore/qdebug.h:44,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/c++/4.3/bits/stl_tree.h:158: error: 'ptrdiff_t' does not name a type
/usr/include/c++/4.3/bits/stl_tree.h:230: error: 'ptrdiff_t' does not name a type
/usr/include/c++/4.3/bits/stl_tree.h:339: error: 'ptrdiff_t' does not name a type
In file included from /usr/include/qt4/QtCore/qdebug.h:44,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/qt4/QtCore/qmap.h:196: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qmap.h:264: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qmap.h:367: error: 'ptrdiff_t' does not name a type
In file included from /usr/include/c++/4.3/vector:70,
                 from /usr/include/qt4/QtCore/qvector.h:48,
                 from /usr/include/qt4/QtCore/qdebug.h:48,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/c++/4.3/bits/stl_vector.h:198: error: 'ptrdiff_t' does not name a type
In file included from /usr/include/c++/4.3/vector:71,
                 from /usr/include/qt4/QtCore/qvector.h:48,
                 from /usr/include/qt4/QtCore/qdebug.h:48,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/c++/4.3/bits/stl_bvector.h:111: error: template argument 3 is invalid
/usr/include/c++/4.3/bits/stl_bvector.h:140: error: 'ptrdiff_t' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'void std::_Bit_iterator_base::_M_incr(int)':
/usr/include/c++/4.3/bits/stl_bvector.h:142: error: 'difference_type' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h:142: error: expected `;' before '__n'
/usr/include/c++/4.3/bits/stl_bvector.h:143: error: '__n' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h: At global scope:
/usr/include/c++/4.3/bits/stl_bvector.h:182: error: expected initializer before 'operator'
/usr/include/c++/4.3/bits/stl_bvector.h:234: error: declaration of 'operator+=' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:234: error: expected ';' before '(' token
/usr/include/c++/4.3/bits/stl_bvector.h:240: error: expected `;' before 'iterator'
/usr/include/c++/4.3/bits/stl_bvector.h:241: error: declaration of 'operator-=' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:241: error: expected ';' before '(' token
/usr/include/c++/4.3/bits/stl_bvector.h:247: error: expected `;' before 'iterator'
/usr/include/c++/4.3/bits/stl_bvector.h:248: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h:255: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h:262: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'std::_Bit_iterator std::_Bit_iterator::operator+(int) const':
/usr/include/c++/4.3/bits/stl_bvector.h:251: error: no match for 'operator+=' in '__tmp += __i'
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'std::_Bit_iterator std::_Bit_iterator::operator-(int) const':
/usr/include/c++/4.3/bits/stl_bvector.h:258: error: no match for 'operator-=' in '__tmp -= __i'
/usr/include/c++/4.3/bits/stl_bvector.h: At global scope:
/usr/include/c++/4.3/bits/stl_bvector.h:267: error: declaration of 'operator+' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:267: error: 'ptrdiff_t' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h:267: error: expected primary-expression before 'const'
/usr/include/c++/4.3/bits/stl_bvector.h:320: error: declaration of 'operator+=' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:320: error: expected ';' before '(' token
/usr/include/c++/4.3/bits/stl_bvector.h:326: error: expected `;' before 'const_iterator'
/usr/include/c++/4.3/bits/stl_bvector.h:327: error: declaration of 'operator-=' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:327: error: expected ';' before '(' token
/usr/include/c++/4.3/bits/stl_bvector.h:333: error: expected `;' before 'const_iterator'
/usr/include/c++/4.3/bits/stl_bvector.h:334: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h:341: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h:348: error: 'difference_type' has not been declared
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'std::_Bit_const_iterator std::_Bit_const_iterator::operator+(int) const':
/usr/include/c++/4.3/bits/stl_bvector.h:337: error: no match for 'operator+=' in '__tmp += __i'
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'std::_Bit_const_iterator std::_Bit_const_iterator::operator-(int) const':
/usr/include/c++/4.3/bits/stl_bvector.h:344: error: no match for 'operator-=' in '__tmp -= __i'
/usr/include/c++/4.3/bits/stl_bvector.h: At global scope:
/usr/include/c++/4.3/bits/stl_bvector.h:353: error: declaration of 'operator+' as non-function
/usr/include/c++/4.3/bits/stl_bvector.h:353: error: 'ptrdiff_t' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h:353: error: expected primary-expression before 'const'
/usr/include/c++/4.3/bits/stl_bvector.h:485: error: 'ptrdiff_t' does not name a type
/usr/include/c++/4.3/bits/stl_iterator_base_types.h: In instantiation of 'std::iterator_traits<std::_Bit_iterator>':
/usr/include/c++/4.3/bits/stl_iterator.h:108:   instantiated from 'std::reverse_iterator<std::_Bit_iterator>'
/usr/include/c++/4.3/bits/stl_bvector.h:605:   instantiated from here
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:133: error: no type named 'iterator_category' in 'struct std::_Bit_iterator'
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:134: error: no type named 'value_type' in 'struct std::_Bit_iterator'
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:135: error: no type named 'difference_type' in 'struct std::_Bit_iterator'
/usr/include/c++/4.3/bits/stl_iterator_base_types.h: In instantiation of 'std::iterator_traits<std::_Bit_const_iterator>':
/usr/include/c++/4.3/bits/stl_iterator.h:108:   instantiated from 'std::reverse_iterator<std::_Bit_const_iterator>'
/usr/include/c++/4.3/bits/stl_bvector.h:609:   instantiated from here
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:133: error: no type named 'iterator_category' in 'struct std::_Bit_const_iterator'
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:134: error: no type named 'value_type' in 'struct std::_Bit_const_iterator'
/usr/include/c++/4.3/bits/stl_iterator_base_types.h:135: error: no type named 'difference_type' in 'struct std::_Bit_const_iterator'
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'size_t std::vector<bool, _Alloc>::max_size() const':
/usr/include/c++/4.3/bits/stl_bvector.h:645: error: 'difference_type' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h:645: error: template argument 1 is invalid
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'std::_Bit_iterator std::vector<bool, _Alloc>::insert(std::_Bit_iterator, const bool&)':
/usr/include/c++/4.3/bits/stl_bvector.h:758: error: 'difference_type' does not name a type
/usr/include/c++/4.3/bits/stl_bvector.h:764: error: '__n' was not declared in this scope
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'void std::vector<bool, _Alloc>::resize(size_t, bool)':
/usr/include/c++/4.3/bits/stl_bvector.h:804: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/stl_bvector.h: In member function 'void std::vector<bool, _Alloc>::_M_initialize(size_t)':
/usr/include/c++/4.3/bits/stl_bvector.h:841: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
In file included from /usr/include/c++/4.3/vector:74,
                 from /usr/include/qt4/QtCore/qvector.h:48,
                 from /usr/include/qt4/QtCore/qdebug.h:48,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/c++/4.3/bits/vector.tcc: In member function 'void std::vector<bool, _Alloc>::_M_fill_insert(std::_Bit_iterator, size_t, bool)':
/usr/include/c++/4.3/bits/vector.tcc:566: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc:567: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc:568: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc:577: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc:579: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc: In member function 'void std::vector<bool, _Alloc>::_M_insert_range(std::_Bit_iterator, _ForwardIterator, _ForwardIterator, std::forward_iterator_tag)':
/usr/include/c++/4.3/bits/vector.tcc:602: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
/usr/include/c++/4.3/bits/vector.tcc:604: error: there are no arguments to 'difference_type' that depend on a template parameter, so a declaration of 'difference_type' must be available
In file included from /usr/include/qt4/QtCore/qdebug.h:48,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/qt4/QtCore/qvector.h: At global scope:
/usr/include/qt4/QtCore/qvector.h:249: error: 'ptrdiff_t' does not name a type
In file included from /usr/include/qt4/QtCore/qdebug.h:49,
                 from /usr/include/qt4/QtCore/QDebug:1,
                 from main.cpp:2:
/usr/include/qt4/QtCore/qset.h:94: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qset.h:129: error: 'ptrdiff_t' does not name a type
/usr/include/qt4/QtCore/qset.h:185: error: 'ptrdiff_t' does not name a type
In file included from thread.h:10,
                 from main.cpp:6:
functions.h:1: error: 'ifndef' does not name a type
main.cpp: In function 'int main(int, char**)':
main.cpp:10: error: 'QCoreApplication' was not declared in this scope
main.cpp:10: error: expected `;' before 'a'
make: *** [main.o] Error 1
это потому что, установилась qt 4.3 , а я писал на 4.7.4 ?
если да, то как мне установить пакет с новой версией кьют? старую удалить надо или как
http://packages.qa.debian.org/q/qt4-x11.html
вот тут есть
testing 4:4.7.4-2
unstable 4:4.7.4-2
exp 4:4.8.0-1

если я установлю 4.7.4 у меня соберется прога?
красноглазики, хелп плиз


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 19:38
это потому что, установилась qt 4.3 , а я писал на 4.7.4 ?

с чего ты взял? Установилась 4.7. Напиши простейший пример на Qt и посмотри скомпилится он или нет. Если да, то без исходников твоей программы сложно сказать. Поверхностно видно, что не подключен stddef.h, но без исходников это, опять же, вилами по воде.

P.S. Debian Squeeze?


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 19:43
//с чего ты взял?
/usr/include/c++/4.3
это версия компилятора?

debian lenny

написал, скомпилилось.
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   std::string strIn;
   std::cin >> strIn;
   std::cout << strIn << std::endl;
 
   return 0;
   //return a.exec();
}

//Поверхностно видно, что не подключен stddef.h
мой проект под виндой компилится... под линукс надо по-другому чтоле собирать :o

.pro
Код
C++ (Qt)
QT       += core network
 
QT       -= gui
 
TARGET = gpc
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp \
   thread.cpp \
   functions.cpp
 
HEADERS += thread.h \
   functions.h
 
//INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
заменил на
INCLUDEPATH += /usr/include

main.cpp
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <iostream>
#include <QTextCodec>
 
#include "thread.h"
 
int main(int argc, char *argv[]) //
{
   QCoreApplication a(argc, argv);
 
   QTextCodec *codec = QTextCodec::codecForName("UTF-8");
   QTextCodec::setCodecForCStrings(codec);
   QTextCodec::setCodecForLocale(codec);
   //QTextCodec::setCodecForTr(codec);
 
   QTextStream out(stdout);
   QTextStream in(stdin);
if (argc == 2) {
       QString command = argv[1];
       if (command == "start") {
           //qDebug() << "do thread";
           googlePositionCheckerThread thread;
           thread.start();            
           thread.wait();
           //qDebug() << "posle thread";
 
           return 0;
       } else if (command == "stop") {
           // как-то остановить, но не выйти!
           // вернуть управление в консоль
       } else if (command == "exit" || command == "quit") {
           return 0;
       }
   } else {
       // ничего не делать, программа не должна завершиться
       //return 0; не?
   }
 
   return 0;
}


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 19:55
выложи проект целиком в архиве


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 19:55
/usr/include/c++/4.3
это версия компилятора?

да


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 19:57
во, прикол.
main.cpp был в UTF-8
перекодировал в UTF-8 без BOM
ща такие ошибки


Код:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_NETWORK_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/QtNetwork -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 -I/usr/include -I. -I. -o main.o main.cpp
In file included from main.cpp:6:
thread.h:8:25: error: QElapsedTimer: No such file or directory
In file included from thread.h:10,
                 from main.cpp:6:
functions.h:1: error: stray '\357' in program
functions.h:1: error: stray '\273' in program
functions.h:1: error: stray '\277' in program
functions.h:1: error: stray '#' in program
In file included from thread.h:10,
                 from main.cpp:6:
functions.h:70:2: error: #endif without #if
functions.h:1: error: 'ifndef' does not name a type
make: *** [main.o] Error 1


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 20:02
functions.h так же сделал без BOM
ща так

Код:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_NETWORK_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/QtNetwork -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 -I/usr/include -I. -I. -o main.o main.cpp
In file included from main.cpp:6:
thread.h:8:25: error: QElapsedTimer: No such file or directory
make: *** [main.o] Error 1
почему компилятор не может парсить utf-8?
я под виндой собираю на minGW и норм...
может компилятор другой установить? :-\


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 20:05
QElapsedTimer появился только в 4.7.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 20:09
ага ща тоже в доке посмотрел.
т.е. версия кьют установилась не 4.7.4 как я и думал...
как обновить?
http://packages.qa.debian.org/q/qt4-x11.html
вот здесь в тестинг она есть, как ее установить правильно подскажи плиз?


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 20:11
почему компилятор не может парсить utf-8?
я под виндой собираю на minGW и норм...
может компилятор другой установить? :-\

Насколько я помню это implementation defined, и хранение utf8 символов прямо в коде чревато проблемами с переносимостью.


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 16, 2012, 20:15
ага ща тоже в доке посмотрел.
т.е. версия кьют установилась не 4.7.4 как я и думал...
как обновить?
http://packages.qa.debian.org/q/qt4-x11.html
вот здесь в тестинг она есть, как ее установить правильно подскажи плиз?

фактически никак, проще переписать код без этого класса. Раз его добавили только в 4.7, то, очевидно, как-то раньше без него обходились.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 20:24
в смысле никак? :o
из исходников то можно надеюсь собрать будет?

еще ошибки


Код:
functions.cpp:311: error: no matching function for call to 'QByteArray::append(char [1024], unsigned int)'
/usr/include/qt4/QtCore/qbytearray.h:210: note: candidates are: QByteArray& QByteArray::append(char)
/usr/include/qt4/QtCore/qbytearray.h:211: note:                 QByteArray& QByteArray::append(const char*)
/usr/include/qt4/QtCore/qbytearray.h:212: note:                 QByteArray& QByteArray::append(const QByteArray&)
/usr/include/qt4/QtCore/qstring.h:939: note:                 QByteArray& QByteArray::append(const QString&)


functions.cpp:687: error: 'currentMSecsSinceEpoch' is not a member of 'QDateTime'


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 16, 2012, 20:32
Код
C++ (Qt)
QByteArray Functions::uncompress(const QByteArray &data)
{
   if (data.size() <= 4) {
       qWarning("uncompress: Input data is truncated");
       return QByteArray();
   }
 
   QByteArray result;
 
   int ret;
   z_stream strm;
   static const int CHUNK_SIZE = 1024;
   char out[CHUNK_SIZE];
 
   /* allocate inflate state */
   strm.zalloc = Z_NULL;
   strm.zfree = Z_NULL;
   strm.opaque = Z_NULL;
   strm.avail_in = data.size();
   strm.next_in = (Bytef*)(data.data());
 
   ret = inflateInit2(&strm, 15 +  32); // gzip decoding
   if (ret != Z_OK)
       return QByteArray();
 
   // run inflate()
   do {
       strm.avail_out = CHUNK_SIZE;
       strm.next_out = (Bytef*)(out);
 
       ret = inflate(&strm, Z_NO_FLUSH);
       Q_ASSERT(ret != Z_STREAM_ERROR);  // state not clobbered
 
       switch (ret) {
       case Z_NEED_DICT:
           ret = Z_DATA_ERROR;     // and fall through
       case Z_DATA_ERROR:
       case Z_MEM_ERROR:
           (void)inflateEnd(&strm);
           return QByteArray();
       }
 
       result.append(out, CHUNK_SIZE - strm.avail_out);
   } while (strm.avail_out == 0);
 
   // clean up and return
   inflateEnd(&strm);
   return result;
}
 
вот на это ругается
result.append(out, CHUNK_SIZE - strm.avail_out);

и на это
qsrand(QDateTime::currentMSecsSinceEpoch());

 :-\
как узнать какая версия установлена ща


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 01:40
нашел в убунту у себя либы
/usr/lib/i386-linux-gnu

libQtCore.prl
libQtCore.so
libQtCore.so.4
libQtCore.so.4.7
libQtCore.so.4.7.4

какая между ними разница? и какая нужна для запуска проги?


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 01:56
http://darkk.livejournal.com/57392.html

как я понимаю, если просто либу закинуть в папку с прогой, то она не будет использоваться первичной. или вообще не будет использоваться...
как заменить мне старые либы на новые?
- удалить системные, тогда прога запуститься с либами из папки
- заменить системные
- что-то где-то прописать, создать?

//запускающий скрипт устанавливает корректную переменную LD_LIBRARY_PATH
 :-\


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 02:01
4.4.3 ща стоит


Название: Re: как запустить на сервере linux debian
Отправлено: pastor от Февраль 17, 2012, 04:57
Код:
как заменить мне старые либы на новые?

Можно просто собрать Qt 4.7.4 самому из исходников


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 10:30
ага. а как в дебиан правильно указать переменную окружения с новой кьют? куда что добавить?
и получается нельзя прогу с либами в папке переносить на линукс чтоле? надо на каждой машине собирать кьют? :o


Название: Re: как запустить на сервере linux debian
Отправлено: Bepec от Февраль 17, 2012, 10:44
Это же линукс...

Потому на него вирусняков то и нету, ибо просто "запуск программы" там такой опции нету ;)


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 17, 2012, 14:06
ага. а как в дебиан правильно указать переменную окружения с новой кьют? куда что добавить?
и получается нельзя прогу с либами в папке переносить на линукс чтоле? надо на каждой машине собирать кьют? :o

можно, но это геморрой, и никто так не делает. Обычно собирают бинарные пакеты под каждый дистрибутив и прописывают в них зависимости. В твоём случае вполне можно обойтись и без 4.7.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 14:31
а как мне собрать бинарный пакет и прописать зависимости если у ленни лежит 4.4.3, а мне нужно 4.7.4+

// В твоём случае вполне можно обойтись и без 4.7.
ага, подождать еще лет 10 пока кто-то сделает поддержку более новой либы. имею в виду бред подстраивать исходники под версию либы.


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 17, 2012, 15:21
ага, подождать еще лет 10 пока кто-то сделает поддержку более новой либы.

Уже сделали, в Wheezy. Lenny уже не поддерживается, туда ничего добавлять не будут, даже багфиксы.

имею в виду бред подстраивать исходники под версию либы.

У тебя используется один класс и один метод из 4.7, без них легко можно обойтись, используя аналоги из других классов, или написав свою функциональность. Все проблемы сразу решаются.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 15:29
зачем переписывать, если можно поставить новую версию либы? :-\


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 17, 2012, 15:33
зачем переписывать, если можно поставить новую версию либы? :-\

В смысле скомпилировать вручную? Как хочешь, по-мойму проще за 20 минут переписать нужные функции.


Название: Re: как запустить на сервере linux debian
Отправлено: Bepec от Февраль 17, 2012, 15:48
Unix и иже с ним - жуткая система в плане инитуитивно понятного интерфейса ;)

Но в принципе выполняют свои задачи.



Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 15:59
проще то оно может проще, но зачем себя ограничивать в дальнейшем. я еще буду под сервак писать, придется каждый раз проверять, чтобы код не выходил за 4.4.3. я только не пойму, почему под lenny новую либу не собрали?
если я ща дособеру из сорцов, у меня могут быть проблемы какие-то со стабильной работой? :-[

я на убунту собрал у себя, без проблем все собралось как и на винде.
запара из-за того, что хз как обновить версию либы на дебиан. и хз можно или нельзя либы потом с собой таскать или на каждой машине придется собирать...
но ты прав, мозгое... еще то :D >:(


Название: Re: как запустить на сервере linux debian
Отправлено: Alex Custov от Февраль 17, 2012, 16:07
я только не пойму, почему под lenny новую либу не собрали?

Стабильные релизы как Lenny или Squeeze выпускают только багфиксы. Было бы странно, если на стабильном релизе меняли бы версии библиотек. К тому же, Lenny больше не поддерживается.

запара из-за того, что хз как обновить версию либы на дебиан.

Обновить Qt до 4.7 на Lenny через пакетный менеджер - практически нереально, за этим обновится полсистемы, если не больше, по зависимостям. Проще сразу поставить Wheezy.

и хз можно или нельзя либы потом с собой таскать

Можно, устанавливая переменную LD_LIBRARY_PATH.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 16:13
//Можно, устанавливая переменную LD_LIBRARY_PATH
покажи, плиз, на примере как это делается?

мне из либ нужны core и network (только какой файл... там их несколько. вроде одинаковые...)

кидаю я их в папку с прогой
мне нужно файл создать в этой же папки и в нем LD_LIBRARY_PATH прописать какой-то?


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 16:18
http://www.firststeps.ru/linux/r.php?7

Для такого случая есть другое безболезненное решение. Это использование специальной переменной среды LD_LIBRARY_PATH, в которой перечисляются все каталоги содержащие пользовательские динамические библиотеки. Для того, чтобы установить эту переменную в командной среде bash надо набрать всего несколько команд. Для начала посмотрим есть ли у нас такая переменная среды:

dron:~# echo $LD_LIBRARY_PATH
У меня в ответ выводится пустая строка, означающая, что такой переменной среды нет. Устанавливается она следующим образом:

dron:~# LD_LIBRARY_PATH=/root
dron:~# export LD_LIBRARY_PATH
После этого программа rezultdyn будет прекрасно работать. В случае, если у Вас в системе эта переменная среды уже уставновлена, то, чтобы не испортить ее значение, надо новый каталог прибавить к старому значению. Делается это другой командой:

dron:~# LD_LIBRARY_PATH=/root:${LD_LIBRARY_PATH}
dron:~# export LD_LIBRARY_PATH
Если Вы обнулите эту переменную, то снова библиотека перестанет работать:

dron:~# LD_LIBRARY_PATH=""
dron:~# export LD_LIBRARY_PATH
dron:~# ./rezultdyn
./rezultdyn: error in loading shared libraries: libfsdyn.so: cannot open
shared object file: No such file or directory
dron:~#
Вы также параллельно можете зайти в систему под другим пользователем или даже тем же самым, но если Вы захотите просмотреть значение LD_LIBRARY_PATH, то увидите ее прежнее значение. Это означает, что два разных пользователя Linux не могут влиять на работу друг друга, а это и есть самое главное хорошее отличие систем Unix от большинства других систем.


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 16:20
еще вопрос
запустил сборку make
вылезла ошибка.
допустим, исправил ошибку. можно как-то возобновить сборку или надо поновой все собирать?


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 17, 2012, 18:23
ааа в рот мне ноги! собрал новый кьют и все сразу собралось без косяков и работает!
осталось решить проблему с переносом и зае :D
всем спасибо за помощь!

Alex Custov, такое мозгое этот ваш линукс! :)


Название: Re: как запустить на сервере linux debian
Отправлено: thechicho от Февраль 20, 2012, 19:20
сделал как-то так

ldd gpc (gpc - имя проги)

        libQtSql.so.4 => /usr/local/Trolltech/Qt-4.8.0/lib/libQtSql.so.4 (0xb7f22000)
        libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15 (0xb7d29000)
        libQtNetwork.so.4 => /usr/local/Trolltech/Qt-4.8.0/lib/libQtNetwork.so.4 (0xb7c23000)
        libQtCore.so.4 => /usr/local/Trolltech/Qt-4.8.0/lib/libQtCore.so.4 (0xb79b0000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7998000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb78aa000)
        libm.so.6 => /lib/libm.so.6 (0xb7884000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7877000)
        libc.so.6 => /lib/libc.so.6 (0xb7738000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7723000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0xb76f1000)
        libnsl.so.1 => /lib/libnsl.so.1 (0xb76da000)
        libdl.so.2 => /lib/libdl.so.2 (0xb76d6000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb76d0000)
        librt.so.1 => /lib/librt.so.1 (0xb76c7000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7612000)
        /lib/ld-linux.so.2 (0xb7f60000)
        libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb75e9000)
т.е. для запуска проги на другом компе, эти либы должны быть там.

скопировал прогу ну другой комп
посмотрел, что не хватает ldd gpc
оказалось, что все есть, кроме
libQtSql.so.4
libmysqlclient_r.so.15
libQtNetwork.so.4
libQtCore.so.4

кинул эти либы в папку с прогой, прописал
LD_LIBRARY_PATH=/home/gpc (папка с прогой)
export LD_LIBRARY_PATH

но почему то эта переменная обнулялась после выхода.
закинул эти либы в /usr/lib/

фак йех! все работает как и задумывалось :)


Название: Re: [РЕШЕНО] как запустить на сервере linux debian
Отправлено: thechicho от Февраль 20, 2012, 20:30
./MyProgram & нифига не работает или я не догнал как это правильно использовать. после закрытия путти, прога вырубалась.

чтобы запустить прогу в фоне
http://www.linux.org.ru/wiki/en/Desktop#a_.D0.9A.D0.B0.D0.BA_.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D1.82.D0.B8.D1.82.D1.8C_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D1.83_.D0.B2_.D1.84.D0.BE.D0.BD.D0.B5.2C_.D0.B1.D0.B5.D0.B7_.D0.BF.D1.80.D0.B8.D0.B2.D1.8F.D0.B7.D0.BA.D0.B8_.D0.BA_.D1.82.D0.B5.D1.80.D0.BC.D0.B8.D0.BD.D0.B0.D0.BB.D1.83.3F

Как запустить программу в фоне, без привязки к терминалу?
Просто без привязки к конкретной консоли (пользователь остается за машиной):
user@linux$ nohup COMMAND [ARG]...
Программа nohup запускает COMMAND таким образом, что она игнорирует сигнал hangup, что позволяет ей продолжать работу и после выхода из терминала. Также, она перенаправляет весь вывод программы в файл ~/nohup.out и понижает приоритет выполняемой программы.
Запустить ее в screen:
user@linux$ screen -S имя команда [параметры]
Выйти из сеанса можно при помощи сочетания клавиш Ctrl-A Ctrl-D. Подключиться обратно так:
user@linux$ screen -R имя
Очень рекомендуем прочитать man screen (он подробный и хорошо написан).
Также можно "отвязать" от терминала программу, уже запущенную в фоновом режиме в bash, командой disown.
 
user@linux$ xmms http://64.236.34.67:80/stream/2007 &
user@linux$ disown xmms
Еще можно воспользоваться командами fg, bg, job

я проверил
nohup ./gpc
закрыл консоль
работает!