crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Запуск программы на qt на компьютере без qt, библиотеки в папку класть или как?
l0ki
  опции профиля:
сообщение 14.11.2010, 12:15
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, у меня нубский вопрос.

Вот я написал программу на qt. Мне теперь надо ее запустить на другом компьютере, где не стоит qt. Какие манипуляции мне надо проделать, чтобы программа запустилась?

В windows работает просто положить в папочку с исполняемым файлом qtcore.dll и qtgui.dll (ну еще от mingw dll).
Но мне нужна помощь с linux. Я писал программу в Ubuntu 10.04, но я не могу теперь запустить ее на только что установленной Ubuntu 10.10. Мой товарищ попробовал запустить у себя на linux mint - и там без проблем запустилась (отсюда я делаю вывод, что там по умолчанию установлены библиотеки qt). Я пробовал делать как в win, то есть клал libQtCore.so.4.6.2 и libQtGui.so.4.6.2 (из usr/lib) в папочку с бинарником, но когда пытаюсь запустить ничего не происходит, я попробовал из консоли - там пишет
error while loading shared libraries: libQtGui.so.4: cannot open shared file: No such file or directory
. Я посмотрел, что в usr/lib лежат еще файлы libQtCore.so.4 и libQtGui.so.4 которые являются ссылками на libQtCore.so.4.6.2 и libQtGui.so.4.6.2. Я тоже в своей папочек создал ссылки на файлы лежащие тут же, назвал их также, но ничего не изменилось, все та же ошибка. Подскажите что я не так делаю и как все это правильно организовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2010, 13:11
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В линухе проще Qt установить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 14.11.2010, 13:42
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Могеш в линухе попробовать скомпилить с флагом rpath. Почитай в гугле про это.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 14.11.2010, 15:07
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
В линухе проще Qt установить

То есть мои попытки положить в папочку библиотеки в линуксе точно никак не сработают?

Цитата
Могеш в линухе попробовать скомпилить с флагом rpath. Почитай в гугле про это.

Я может неправильно понял, но вроде написано
Цитата
-rpath <имя-директории> добавляет директорию в список директорий, в которых ищутся разделяемые библиотеки.
Если на компьютере нет бибилиотек qt, то где ему искать?

Нельзя ли каким-то образом запихнуть в программу эти библиотеки (наверное как при статической линковке, я в этом не очень разбираюсь к сожалению), и чтобы она была так сказать самодостаточна, хоть это и увеличит ее размеры в разы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2010, 15:18
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(l0ki @ 14.11.2010, 18:07) *
То есть мои попытки положить в папочку библиотеки в линуксе точно никак не сработают?
нужно через ldd настроить пути к библиотекам (подробности ищи по форуму)

Цитата(l0ki @ 14.11.2010, 18:07) *
Если на компьютере нет бибилиотек qt, то где ему искать?
ну тыж собрался их сам куда-то положить

вообще для линуксоидов удовлетворять море зависимостей - норма
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 14.11.2010, 17:34
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


надо собрать статически библиотеку, потом программу. Можно и положить библиотеку. Но если будет другой линух или версия дистрибутива - тады ой. ситуация как в 7 винду тащить софт готовый с ХР скомпиленный какой-то студией

Цитата(l0ki @ 14.11.2010, 18:15) *
Здравствуйте, у меня нубский вопрос.

Вот я написал программу на qt. Мне теперь надо ее запустить на другом компьютере, где не стоит qt. Какие манипуляции мне надо проделать, чтобы программа запустилась?

В windows работает просто положить в папочку с исполняемым файлом qtcore.dll и qtgui.dll (ну еще от mingw dll).
Но мне нужна помощь с linux. Я писал программу в Ubuntu 10.04, но я не могу теперь запустить ее на только что установленной Ubuntu 10.10. Мой товарищ попробовал запустить у себя на linux mint - и там без проблем запустилась (отсюда я делаю вывод, что там по умолчанию установлены библиотеки qt). Я пробовал делать как в win, то есть клал libQtCore.so.4.6.2 и libQtGui.so.4.6.2 (из usr/lib) в папочку с бинарником, но когда пытаюсь запустить ничего не происходит, я попробовал из консоли - там пишет
error while loading shared libraries: libQtGui.so.4: cannot open shared file: No such file or directory
. Я посмотрел, что в usr/lib лежат еще файлы libQtCore.so.4 и libQtGui.so.4 которые являются ссылками на libQtCore.so.4.6.2 и libQtGui.so.4.6.2. Я тоже в своей папочек создал ссылки на файлы лежащие тут же, назвал их также, но ничего не изменилось, все та же ошибка. Подскажите что я не так делаю и как все это правильно организовать.

если разные версии qt - всякое может быть. Скорей всего не сработает. Можно создав ссылочку в /usr/lib или где там, можно зайти в /etc. Там есть файлик ld.so.conf. Запихать туда новый путь и набрать от root команду ldconfig.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 14.11.2010, 21:03
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Могеш в линухе попробовать скомпилить с флагом rpath. Почитай в гугле про это.

Мой g++ говорит про -rpath "g++ unrecognized option", это можно как-то починить или я что-то не так делаю?

Цитата
нужно через ldd настроить пути к библиотекам (подробности ищи по форуму)

Я попробовал сделать как написано здесь
Скопировал скрипт
 #!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
if [ "${dirname:0:1}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname $*

в надежде, что что-то произойдет. Теперь после запуска скрипта у меня требуют уже не qt библиотеки, а libaudio.so.2. Я вообще не представляю, что это за библиотека и каким боком она относится к моей программе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2010, 21:08
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


l0ki, почитай темы:
Как создать самодостаточное приложение под Linux?
ldd
Что нужно для Linux приложения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 14.11.2010, 21:36
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.11.2010, 21:08) *

Спасибо, я посмотрел, но в первой теме все про статическую линковку, это мне кажется сложновато будет.
ldd запускал, мне выдает списочек библиотек, где not found qtcore и qtgui.
В третьей теме некто пишет, что делает как и я сейчас пытаюсь через скрипт, но с этим скриптом каким-то образом разрастается число библиотек и требует чертову libaudio.so.2 (что это??). Я нашел в интернете утилиту patchelf и пропатчил бинарник ею с опцией rpath и та же фигня, список в ldd разросся в 3 раза и опять требуют libaudio.so.2

Так, ладно, я нашел эту libaudio.so.2, я не знаю зачем она нужна, но я скопировал ее к бинарнику и прога наконец запустилась на машине без qt.

Подытоживая, я хочу посоветовать таким же нубам как я (которых тоже пугает статическая сборки qt и программы) самый простой способ запустить программу на компе без qt скопировать скрипт вот из этой статьи в папочку с программой и библиотеками. назвать его имя-программы.sh и запустить его (только в bash, sh ошибку пишет).

Да, и всем огромное спасибо за помощь, а то я даже не знал где и как искать решение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2010, 21:40
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(l0ki @ 15.11.2010, 1:36) *
libaudio.so.2 (что это??
смотри через менеджер пакетов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 1:13