Russian Qt Forum
Ноябрь 24, 2024, 08:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] как запустить на сервере linux debian  (Прочитано 17296 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #30 : Февраль 17, 2012, 15:21 »

ага, подождать еще лет 10 пока кто-то сделает поддержку более новой либы.

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

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

У тебя используется один класс и один метод из 4.7, без них легко можно обойтись, используя аналоги из других классов, или написав свою функциональность. Все проблемы сразу решаются.
Записан
thechicho
Гость
« Ответ #31 : Февраль 17, 2012, 15:29 »

зачем переписывать, если можно поставить новую версию либы? В замешательстве
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #32 : Февраль 17, 2012, 15:33 »

зачем переписывать, если можно поставить новую версию либы? В замешательстве

В смысле скомпилировать вручную? Как хочешь, по-мойму проще за 20 минут переписать нужные функции.
Записан
Bepec
Гость
« Ответ #33 : Февраль 17, 2012, 15:48 »

Unix и иже с ним - жуткая система в плане инитуитивно понятного интерфейса Подмигивающий

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

Записан
thechicho
Гость
« Ответ #34 : Февраль 17, 2012, 15:59 »

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

я на убунту собрал у себя, без проблем все собралось как и на винде.
запара из-за того, что хз как обновить версию либы на дебиан. и хз можно или нельзя либы потом с собой таскать или на каждой машине придется собирать...
но ты прав, мозгое... еще то Веселый Злой
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #35 : Февраль 17, 2012, 16:07 »

я только не пойму, почему под lenny новую либу не собрали?

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

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

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

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

Можно, устанавливая переменную LD_LIBRARY_PATH.
Записан
thechicho
Гость
« Ответ #36 : Февраль 17, 2012, 16:13 »

//Можно, устанавливая переменную LD_LIBRARY_PATH
покажи, плиз, на примере как это делается?

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

кидаю я их в папку с прогой
мне нужно файл создать в этой же папки и в нем LD_LIBRARY_PATH прописать какой-то?
Записан
thechicho
Гость
« Ответ #37 : Февраль 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 от большинства других систем.
Записан
thechicho
Гость
« Ответ #38 : Февраль 17, 2012, 16:20 »

еще вопрос
запустил сборку make
вылезла ошибка.
допустим, исправил ошибку. можно как-то возобновить сборку или надо поновой все собирать?
Записан
thechicho
Гость
« Ответ #39 : Февраль 17, 2012, 18:23 »

ааа в рот мне ноги! собрал новый кьют и все сразу собралось без косяков и работает!
осталось решить проблему с переносом и зае Веселый
всем спасибо за помощь!

Alex Custov, такое мозгое этот ваш линукс! Улыбающийся
Записан
thechicho
Гость
« Ответ #40 : Февраль 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/

фак йех! все работает как и задумывалось Улыбающийся
Записан
thechicho
Гость
« Ответ #41 : Февраль 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
закрыл консоль
работает!
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 23.