Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: patison от Август 14, 2010, 13:52



Название: Почему работает после установки новой сборки?
Отправлено: patison от Август 14, 2010, 13:52
Друзья, такой вопросик возник.
Понадобилось собрать статически qt (к этому моменту уже стояла обычная/динамическая сборка).
Следуя инструкции, сконфигурировал сборку qt на static с префиксом нового пути (динамич версия находилась в /usr/local/Trolltech/Qt4.6.2) - /usr/local/Trolltech/Qt4.6.2_static .
Так получилось, что в корне было мало места, потому оригинал сборки пришлось переместить в другое место.
В результате получил статичную сборку в /usr/local/Trolltech/Qt4.6.2_static.
Переменную $PATH не менял (остался путь к старой папки , которую я временно перенёс в другое место). Запускаю Creator, собираю проект - работает.  Причём собирает не статически.

Вопрос - почему работает??

зы есть подозрение что сборка находится где-то в другом месте, но тогда не понятно почему в $PATH нет ничего в этом плане.
ззыы смутило так-же то, что динамич сборка занимала два гига с чем-то, а новая статическая - всего триста метров с небольшим.


Название: Re: Почему работает после установки новой сборки?
Отправлено: Mikhail от Август 14, 2010, 20:54
А кто кроме тебя может изменить $PATH ?
Какая Qt используеться в твоем QtCeator ?
Вообще то для компиляции Qt необходимо установить QTDIR, откорректировать $PATH и только после этого проводить компиляцию, к тому же чистых исходников без Makefile-оф


Название: Re: Почему работает после установки новой сборки?
Отправлено: patison от Август 15, 2010, 01:51
Секундочку. Вообще-то по логике если изменить имя папки куда всё установлено (в моём случае - старую перенёс и новую поставил) - компиляция и линковка не должно проводиться и должна по логике выдаваться ошибка. Тем более что ни QTDIR ни PATH я не менял.

Цитировать
Какая Qt используеться в твоем QtCeator ?
А хз. Где посмотреть можно?
По идее qt.4.6.2


Название: Re: Почему работает после установки новой сборки?
Отправлено: Mikhail от Август 15, 2010, 21:51
Поподробнее пожалуйста.
Каким инструкция следовал?
Конфигурировал и компилировал чисто исходники или предыдущую сборку?
Остались ли предыдущие Makefile-ы?
Откомпилированную программу запускал из QtCreator или из консоли?


Название: Re: Почему работает после установки новой сборки?
Отправлено: patison от Август 16, 2010, 23:48
 - Следовал инструкциям отсюда - http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_Qt_%D0%B2_Linux
 - Конфигурировал и компилил сборку которую скачивал раньше.
 - ПО поводу предыдущих makefile-ов не уверен. Но перед сборкой делал make confclean.
 - Программу компилил, собирал и запускал прямо из QtCreator-a.

зы сейчас осенило посмотреть откуда запускается QtCreator (на тулбаре создавал launcher). Запускается из папочки qtsdk. В этой папочке лежат папки bin/ lib/ и тд . В lib-e что интересно - *.so файлы.
Вспомнил что когда-то качал с сайта SDK для linux. И видимо из него и запускается всё (отсюда и библиотеки берутся). Только вот не понятно в этом случае - как сделать что-бы собирались приложения статически! Т.к. насколько я помню - скачав sdk я его не конфигурировал и не собирал. Просто начал юзать QtCreator из коробки, так сказать...


Название: Re: Почему работает после установки новой сборки?
Отправлено: Mikhail от Август 17, 2010, 08:26
sdk не конфигурируется и не собирается. Там уже все в бинарниках.

Чтобы откомпилировать Qt статичски или динамически делай ВСЕ по той инструкции.

Для начала скачайте исходные коды Qt и распакуйте их.
Убедитесь, что динамическая версия Qt не установлена. Если она установлена, для начала прочтите раздел "Подсказки".
Откройте консоль и перейдите в директорию с исходным кодом Qt.

и далее по тексту инстукции.

Я так и не понял о какой сборке вы говорите. Я так понял, что это не исходники.


Название: Re: Почему работает после установки новой сборки?
Отправлено: crossly от Август 17, 2010, 11:41
скажите qtcreator какую либу использовать для сборки.... и все...


Название: Re: Почему работает после установки новой сборки?
Отправлено: patison от Август 17, 2010, 12:10
Цитировать
sdk не конфигурируется и не собирается. Там уже все в бинарниках.
Ну вот собсна и ответ, я думаю.

А как быть в случае когда на машине уже лежит готовы sdk с creator-ом? Я могу скачать исходы qt, скомпилить статически, а потом скачать отдельно QtCreator , и он будет работать с этими статически собранными либами?

crossly
Каким образом? В настройках искал - ничё не нашёл.


Название: Почему работает после установки новой сборки?
Отправлено: Mikhail от Август 17, 2010, 12:29
Будет работать несомненно. Главное правильно скомпилировать Qt из исходников и в QtCreator выбрать. Смотри Инструменты-Параметры-Qt4 нажми + и укажи путь до qmake ( в каталоге bin ) нужной Qt. Все новые проекты будут использовать это умолчание. Изменить Qt для проекта -  при открытом проекте нажать кнопку Проекты и изменить Профиль Qt по нажатии кнопки Управление. При изменении Профиля Qt для проекта необходимо его очистить и удалить мэйлфайлы. Затем можно компилировать.


Название: Re: Почему работает после установки новой сборки?
Отправлено: patison от Август 17, 2010, 12:41
Спасибо, Михаил.
Т.к. Qt я уже собирал статически (см первые сообщения), то мне осталось только прописать путь до нужного qmake. Пересобрал проект, бинарник из 600кб превратился в 12мб , что означает что собрался он статически =))
Правда теперь вылезли мелкие траблы.. Например в трее не отображаюся картинки, которые находятся в ресурсах проекта.. Но это, думаю, поправимо. Пойду искать решение.


Название: Re: Почему работает после установки новой сборки?
Отправлено: crossly от Август 17, 2010, 15:14
возможно забыл вкомпилировать поддержку форматов изображений в Qt.....


Название: Re: Почему работает после установки новой сборки?
Отправлено: patison от Август 17, 2010, 20:40
Нее.. не забыл:

Код:
./configure -static -prefix /usr/local/Trolltech/Qt-4.6.2_static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -nomake demos -nomake examples