Russian Qt Forum
Ноябрь 23, 2024, 04:06
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
как скомпилировать
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как скомпилировать (Прочитано 10554 раз)
nkly777
Гость
как скомпилировать
«
:
Октябрь 18, 2006, 15:33 »
Использую qt 3.3.4 на LINUXe
Написал приложение. Как описано в мануале все сделал:
qmake -o Makefile app.pro
make
Все нормально, приложение работает.
Переписал получившийся файл на другой компьютер с LINUX и попробовал запустить. Выдало ошибку:
./app: error while loading shared libraries: libqt-mt.so.3: cannot open shared object file: No such file or directory
Как я понял приложение скомпилировано под использование динамических библиотек.
Вопрос:
Как скомпилировать приложение чтобы оно работало на любой системе (то есть чтобы все необходимое для работы приложения было включено в него)?
Вопрос второй:
Мне нужно также скомпилировать еще одно приложение чтобы оно работало под windows,
можно ли скомпилировать его из LINUX или нужно устанавливать QT на Windows и там компилировать?
Может кто расскажет поподробнее про все это, или ссылочку даст где почитать?
Записан
bigirbis
Гость
как скомпилировать
«
Ответ #1 :
Октябрь 18, 2006, 15:42 »
1. Лучше тащить вместе с либами, особенно, если исполняемых файло несколько.
2. Да, надо под виндой заводить (MinGW) или Commercial.
Записан
Ankor
Гость
как скомпилировать
«
Ответ #2 :
Октябрь 18, 2006, 18:40 »
Нужно скомпилировать со статическими библиотеками. В .pro-файле добавить строчку CONFIG += static. Но необходимо, чтобы qt имела статическую бибилиотеку libqt-mt.a.
Записан
bigirbis
Гость
как скомпилировать
«
Ответ #3 :
Октябрь 19, 2006, 09:01 »
Все хорошо, но если это группа приложений...
А под виндой (если не под MinGW, а под VS собиралось) еще и VS либы тащить придетсяю
Записан
nkly777
Гость
как скомпилировать
«
Ответ #4 :
Октябрь 19, 2006, 09:28 »
Цитата: "Ankor"
Но необходимо, чтобы qt имела статическую бибилиотеку libqt-mt.a.
А если нет libqt-mt.a а есть libqt-mt.so.3 то где взять libqt-mt.a?
Записан
bigirbis
Гость
как скомпилировать
«
Ответ #5 :
Октябрь 19, 2006, 10:13 »
Цитировать
А если нет libqt-mt.a а есть libqt-mt.so.3 то где взять libqt-mt.a?
Собрать из исходников Qt, добавив флаг при конфигурировании -static
Записан
nkly777
Гость
как скомпилировать
«
Ответ #6 :
Октябрь 19, 2006, 12:12 »
Цитата: "bigirbis"
Собрать из исходников Qt, добавив флаг при конфигурировании -static
А если мне нужно одно приложение с динамическими библиотеками а другое со статическими, то что каждый раз пересобиратьQt?
Записан
Вудруф
Гость
как скомпилировать
«
Ответ #7 :
Октябрь 19, 2006, 12:27 »
Собрать две версии и менять %QTDIR% не подходит?
Записан
bigirbis
Гость
как скомпилировать
«
Ответ #8 :
Октябрь 19, 2006, 13:07 »
Цитировать
А если мне нужно одно приложение с динамическими библиотеками а другое со статическими, то что каждый раз пересобиратьQt?
Смысл?
Просто во время инстала кидай Qt либы в usr
Записан
nkly777
Гость
как скомпилировать
«
Ответ #9 :
Октябрь 19, 2006, 13:47 »
Цитата: "bigirbis"
Просто во время инстала кидай Qt либы в usr
Простите но я не понял что означает данная фраза. Поясните пожалуйста. А что касается предложения пересборки Qt то что то здесь не так. Я думаю серьезная среда разработки (к которым относится Qt) должна предоставлять программисту выбор какие библиотеки он хочет использовать без пересборки Qt.
Записан
Dair
Гость
Re: как скомпилировать
«
Ответ #10 :
Октябрь 19, 2006, 14:03 »
Цитата: "nkly777"
Использую qt 3.3.4 на LINUXe
./app: error while loading shared libraries: libqt-mt.so.3: cannot open shared object file: No such file or directory
Как я понял приложение скомпилировано под использование динамических библиотек.
Вопрос:
Как скомпилировать приложение чтобы оно работало на любой системе (то есть чтобы все необходимое для работы приложения было включено в него)?
Плохая идея. представь, что у тебя завтра будет два (три, двадцать восемь) Qt-based приложений. Ты будешь вместе с ними ставить 28 копий Qt?.. А зачем, если можно поставить одну?
Под большинство дистрибутивов linux Qt, afaik, собрана в пакеты (например, под debian пакет libqt3-mt). Твоя программа должна собираться в пакет и устанавливать зависимость себя от Qt.
Записан
bigirbis
Гость
как скомпилировать
«
Ответ #11 :
Октябрь 19, 2006, 14:39 »
Цитировать
bigirbis писал(а):
Цитировать
Просто во время инстала кидай Qt либы в usr
Простите но я не понял что означает данная фраза. Поясните пожалуйста.
Под Linux скидывай во время установки либы в /usr/lib
Под Виндой в $(SystemRoot)/system32
Записан
Alex03
Гость
как скомпилировать
«
Ответ #12 :
Октябрь 20, 2006, 07:07 »
Цитата: "bigirbis"
Цитировать
А если нет libqt-mt.a а есть libqt-mt.so.3 то где взять libqt-mt.a?
Собрать из исходников Qt, добавив флаг при конфигурировании -static
Можно проще.
Если дерево исходников есть и уже компилялась *.so то достаточно
make staticlib. (или cd src ; make staticlib - не помню точно)
При этом линковка занимает пару секунд.
По крайней мере в qt3
Записан
Вудруф
Гость
как скомпилировать
«
Ответ #13 :
Октябрь 20, 2006, 07:19 »
Интересно. Кто попробует - скажите, а то я до следующей версии перекомпилировать не буду, а здесь уже всё лишнее потёр
Записан
nkly777
Гость
как скомпилировать
«
Ответ #14 :
Октябрь 20, 2006, 10:04 »
Сформулирую свой вопрос иначе:
Я делаю приложение клиент-сервер на основе примера приведенного в мануале к Qt.
Должно быть порядка 10 программ серверов работающих на Linux и примерно 25-30 клиентов работающих под windows. Естественно компьютеры будут все разные. Как мне сделать чтобы программы запускались без особых проблем (а лучше конечно совсем без проблем) на разных версиях Windows и Linux? Хотя linux можно будет привести к единому варианту.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...