Название: [РЕШЕНО] как запустить на сервере 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 если да, то как мне установить пакет с новой версией кьют? старую удалить надо или как 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 написал, скомпилилось. Код
//Поверхностно видно, что не подключен stddef.h мой проект под виндой компилится... под линукс надо по-другому чтоле собирать :o .pro Код
main.cpp Код
Название: Re: как запустить на сервере linux debian Отправлено: Alex Custov от Февраль 16, 2012, 19:55 выложи проект целиком в архиве
Название: Re: как запустить на сервере linux debian Отправлено: Alex Custov от Февраль 16, 2012, 19:55 Название: 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 Название: Re: как запустить на сервере linux debian Отправлено: thechicho от Февраль 16, 2012, 20:02 functions.h так же сделал без BOM
ща так Код:
я под виндой собираю на 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)' Название: Re: как запустить на сервере linux debian Отправлено: thechicho от Февраль 16, 2012, 20:32 Код вот на это ругается 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 закрыл консоль работает! |