Название: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 20, 2009, 00:16 У меня возникла такая не понятная проблема. Когда у меня была библа 4.5.3 я переориентировал ее в статику как написано в этой http://novikovmaxim.narod.ru/linux/lin_progr/QtStatic.htm (http://novikovmaxim.narod.ru/linux/lin_progr/QtStatic.htm) Все работало после того как я все файлы оканчивающиеся на ..d4.a скопировал и переименовал в ...d.a. Теперь качаю Qt 4.6.0 делаю переориентацию, все работает за исключением одной вещи. он теперь не может найти файл libgcc_s_dw2-1.dll (хотя имхо он должен был включить в exe т.к. статическая линковка). Как это устранить?
Название: Re: Проблемы после сборки Qt в статику Отправлено: crackedmind от Декабрь 20, 2009, 01:42 Писал тут (http://www.forum.crossplatform.ru/index.php?showtopic=3593&view=findpost&p=27986)
Стоит иногда читать инструкции к компиляторам =) Цитировать - Dynamic linking with libgcc_s_dw2-1.dll Dynamic linking with libgcc_s_dw2-1.dll is necessary to throw exceptions between different modules, such as between two DLLs or a DLL and an EXE. Consequently, it is the default for all languages ther than C. To disable this dynamic linking, use -static-libgcc. To enable this dynamic linking in C, use -shared-libgcc. Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 20, 2009, 13:16 Писал тут (http://www.forum.crossplatform.ru/index.php?showtopic=3593&view=findpost&p=27986) Стоит иногда читать инструкции к компиляторам =) Цитировать - Dynamic linking with libgcc_s_dw2-1.dll Dynamic linking with libgcc_s_dw2-1.dll is necessary to throw exceptions between different modules, such as between two DLLs or a DLL and an EXE. Consequently, it is the default for all languages ther than C. To disable this dynamic linking, use -static-libgcc. To enable this dynamic linking in C, use -shared-libgcc. Ну. А как юзать то эту -static-libgcc. В профайле писать или при компиляции? Чето не пойму ??? Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 20, 2009, 23:47 Че никто не знает? ???
Название: Re: Проблемы после сборки Qt в статику Отправлено: crackedmind от Декабрь 21, 2009, 02:00 Что-то типа в pro файле.
Код: QMAKE_CXXFLAGS_RELEASE += -static-libgcc Либо можно mkspec подправить ) Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 21, 2009, 12:50 Что-то типа в pro файле. Код: QMAKE_CXXFLAGS_RELEASE += -static-libgcc Это не помогает :( Я вот подумал, если Qt пересобрать в статику с ключом -static-libgcc ? Получится? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 21, 2009, 17:30 Вы попробуйте, о результатах отпишитесь (-: Соберите только QtCore и минимальную программку.
Название: Re: Проблемы после сборки Qt в статику Отправлено: crackedmind от Декабрь 21, 2009, 17:55 Цитировать Это не помогает Я вот подумал, если Qt пересобрать в статику с ключом -static-libgcc ? Получится? Ну вообще то так и надо))Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 21, 2009, 18:04 Цитировать Это не помогает Я вот подумал, если Qt пересобрать в статику с ключом -static-libgcc ? Получится? Ну вообще то так и надо))А вы не можете помочь, с помощью чего заюзать -static-libgcc в конфиге? а то напрямую config.exe -static -no-qt3support -no-exception -release -static-libgcc не конфигурирует(( Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 21, 2009, 18:35 -static-libgcc нужно дописать в mkspecs/win32-g++/qmake.conf (выше написали в какую переменную), а конфигурировать как обычно. Только лучше пробуйте на чистой копии Qt.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 21, 2009, 18:50 Только лучше пробуйте на чистой копии Qt. Ну я итак confclean сделаю. :) Спасибо за информацию. Проведу переориентацию, и сообщу о результатах) И уточню. Мне нужно дописать в файл сделать confclean, потом дописать в qmake.conf строчку QMAKE_CXXFLAGS_RELEASE += -static-libgcc, и потом уже заного пересобрать библу? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 21, 2009, 20:04 Да. А перед make confclean сделать make distclean.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 21, 2009, 21:55 у меня существует уже надпись QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE. Мне вместо нее подставить QMAKE_CXXFLAGS_RELEASE = -static-libgcc или сделать еще одну строку QMAKE_CXXFLAGS_RELEASE и вписать в нее -static-libgcc?
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 21, 2009, 22:10 QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -static-libgcc
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 21, 2009, 22:24 QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -static-libgcc спасибо. Щас буду пересобирать :) Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 15:35 Просидев до 3 часов ночи, собирая Qt в статику заного, я сегодня запускаю Qt Creator, Запускаю статическую сборку проекта и что же я вижу!!! >:( Простая gui-программа (терминалка собственного приготовления) при предыщей статической сборке занимала 7,69 Мб. Это еще куда не шло. Когда я пересобрал библу, перед этим приписав в файле C:\Qt\2009.05\qt\mkspecs\win32-g++\qmake.conf к константе
Код: QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE выражение -static-libgcc то есть получилось так: Код: QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -static-libgcc Как мне быыыыыть? :'( Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 16:27 Собирать весь Qt, чтобы проверить исчезла ли зависимость, не нужно. Достаточно сделать:
Код: cd src\corelib И после собрать любую программку, чтобы проверить. Сегодня как доберусь до компьютера проверю сам. Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 16:35 А почему размер файла увеличился аж на целый Мб? И интересно, почему же в версии 4.6.0 такие проблемы со статикой :(
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 16:40 Потому что в Qt часто используется динамическое связывание, когда на этапе компиляции неизвестно какая именно функция будет вызвана. Как следствие - в зависимостях оказывается чуть ли не вся библиотека.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 16:47 Ну вот я пытался, чтобы у меня Debug был динамический, а Release статический. с 4.5.3 получалось, а тут никак :( немогу начать работу
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 17:04 Оказывается это опция не компилятора, а линковщика, а значит флаг нужно было добавлять сюда:
QMAKE_LFLAGS_RELEASE = -Wl,-s,-static-libgcc А из QMAKE_CXXFLAGS_RELEASE - убрать. Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 17:13 Оказывается это опция не компилятора, а линковщика, а значит флаг нужно было добавлять сюда: QMAKE_LFLAGS_RELEASE = -Wl,-s,-static-libgcc А из QMAKE_CXXFLAGS_RELEASE - убрать. а теперь стало появляться такое сообщение при сборке Release: Код
А файл вроде на месте Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 17:16 Так мне опять всю библу пересобирать?! ??? ААААА :o
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 17:33 Чтобы пересобрать QtCore с нуля хватает 5 минут с учётом конфигурирования.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 17:40 Чтобы пересобрать QtCore с нуля хватает 5 минут с учётом конфигурирования. Я чет не совсем пойму как собрать именно QtCore) Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 18:20 Код: cd src\tools\bootstrap Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 20:00 значит мнее сделать mingw32-make.exe confclean а потом вот эти команды?
А так и вводить cd cd src\tools\bootstrap\..\..\..\bin\qmake && make?? (Сори за такие вопросы, просто не хочу тыщу раз переделывать :) ) Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 20:15 Это нужно выполнить сразу после configure.exe, вместо make -> mingw32-make (я так понимаю у вас именно он), а вызов qmake можно вообще убрать, поскольку мейкфайлы уже были собраны. Я обычно вообще забиваю на configure.exe (задаёт глупый вопрос про лицензию и тормозит, собирая мейкфайлы для всего подряд) и qmake собираю сам:
Код: сd qmake Но у вас должно быть примерно так: Код: configure.exe (your favorite arguments list) Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 20:24 Ок. Спасибо :) Щас попробую
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 20:54 Странно. При сборке moc он выдает ошибку на отсутсвие ld.exe (хотя такой файл есть) ???
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 20:57 Нет не самого ld, а чего-то что он пытается вызвать.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 21:00 Нет не самого ld, а чего-то что он пытается вызвать. Я сейчас переустановлю QT SDK, добавлю в файл -static-libgcc, отконфигурирую и соберу QtCore. Раз только QtCore, значит статически собирать только консольные приложения да? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 21:01 Да. Но можете собрать таким же образом и QtGui. И winmain, если нужно.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 21:11 Да. Но можете собрать таким же образом и QtGui. И winmain, если нужно. Да если будет работать, я заного все от радости пересоберу разом :) Лишь бы этот раз заработало. Вот же приходится париться с 4.6.0 Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 21:45 Короче он не хочет собирать moc, uic и т.д. Собрал только src\tools\bootstrap.
Что посоветуете ??? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 22:00 Забить на сборку moc, uic, rcc и просто скопировать их из другой сборки Qt в $qtdir/bin
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 22:02 Забить на сборку moc, uic, rcc и просто скопировать их из другой сборки Qt в $qtdir/bin А у меня другой статической сборки Qt нету :(Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 22:14 Неважно статическая или нет, эти программы не зависят ни от каких DLL и подойдут из любой сборки.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 22:54 как то странно. У меня нету файла uic.exe вместо него uic3.exe. rcc.exe есть. moc.exe вообще в папке Qt нету (на компьютере сборка только эта) ???
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 22, 2009, 23:10 Соберите любую шаровую Qt или возьмите из Qt SDK. Проблему нашли...
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 22, 2009, 23:52 Соберите любую шаровую Qt или возьмите из Qt SDK. Проблему нашли... Нашел файлы. Собрал cd src\corelib. Создаю консольное приложение и сразу собираю Release, и как и в предыдущих случаях получаю: Код: Выполняется сборка проекта MyFirstApp... :( Непонятно....блин, и дернул же меня черт снести рабочую статику 4.5.3 и поставить 4.6.0. А ставил то ради того, чтобы покодить на Symbian. В итоге не покодил нихрена, и загубил библу :( Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 23, 2009, 00:11 Посчитав двоеточия я таки вижу, что ld.exe там нет, он ищет в c:/Qt/2009.05/mingw32, а у вас полагаю c:/Qt/2009.05/mingw. Причина этому мне не ясна, скорее всего остатки предыдущей конфигурации дают знать. Варианты: 1) запустите configure.exe на чистой Qt. 2) Создайте файл ld.exe там где он просит.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 00:27 Посчитав двоеточия я таки вижу, что ld.exe там нет, он ищет в c:/Qt/2009.05/mingw32, а у вас полагаю c:/Qt/2009.05/mingw. Причина этому мне не ясна, скорее всего остатки предыдущей конфигурации дают знать. Варианты: 1) запустите configure.exe на чистой Qt. 2) Создайте файл ld.exe там где он просит. Я переустанавливал SDK, предыдущей конфигурации быть не может. И посмотрел, ld.exe лежит в нескольких папках, этот адрес: Код: c:/qt/2009.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ Код: C:\Qt\2009.05\mingw\mingw32\bin Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 23, 2009, 00:31 Попробуйте ещё раз на чистой Qt.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 00:39 Попробуйте ещё раз на чистой Qt. Моя последовательность действий:1) Удалить эту Qt 2) Установить заного 3) дописать в файл qmake.conf к константе выражение -static-libgcc 4)Скопировать uic.exe, rcc.exe, moc.exe в папку C:\Qt\2009.05\qt\bin 5)сконфигурировать configure.exe -static -release -no-qt3support -no-exceptions 6) Собрать src\corelib 8) создать проект консольное приложение и собрать в режиме Release 9)Сообщить о результатах Я правильно понял? :) Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 23, 2009, 00:41 Всё верно, благословляю.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 00:42 Всё верно, благословляю. Спасибо ;DНазвание: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 18:30 Итак. Я все сделал как надо. Но у меня все та же ошибка:
Код: Выполняется сборка проекта MyFirstApp... Буду думать... Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 21:34 не могу понять, в чем проблема((( :'(
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 23, 2009, 21:58 Проверьте переменные окружения, в PATH чтобы был всего один путь на C:\Qt\2009.05\mingw\bin. Скопируйте его в другое место в конце концов, не видное из PATH вообще и перед configure.exe вызовите: set PATH=/path/to/other/mingw/bin;%PATH%
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 23, 2009, 22:37 Проверьте переменные окружения, в PATH чтобы был всего один путь на C:\Qt\2009.05\mingw\bin. Скопируйте его в другое место в конце концов, не видное из PATH вообще и перед configure.exe вызовите: set PATH=/path/to/other/mingw/bin;%PATH% А можно подробнее пожалуйста :) Я не понял Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 04:09 1. Удаляете все пути из переменной окружения PATH в системе, указывающие на mingw.
2. Открываете голую консоль. 3. Переходите в чистую директорию Qt. 4. Добавляете в переменную PATH путь к mingw: Код: set PATH=c:\path\to\mingw\bin;%PATH% 5. Дальше как было описано выше со строчки configure.exe. P.S. Надеюсь сами вы в Qt SDK (я так понимаю mingw оттуда) ничего не меняли. Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 14:31 1. Удаляете все пути из переменной окружения PATH в системе, указывающие на mingw. P.S. Надеюсь сами вы в Qt SDK (я так понимаю mingw оттуда) ничего не меняли. У меня в PATH (если я в ту переменную смотрю) находятся записи C:\WINDOWS\system32 и все в таком роде....если я удалю, это не повлияет на работу системы?? и насчет Qt SDK, что конкретно я мог там поменять? :) Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 14:34 Удаляйте только пользовательский PATH. И не всё, а только лишние пути. В Qt SDK вы ничего и не должны были менять, но мало ли.
Название: Re: Проблемы после сборки Qt в статику Отправлено: lit-uriy от Декабрь 24, 2009, 14:43 в консоль всё таки system32 лучше писать. Я пользуюсь такой строкой:
set PATH=X:\path\to\qt\bin;X:\path\to\mingw\bin;%SystemRoot%\System32 Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 18:10 Удаляйте только пользовательский PATH. И не всё, а только лишние пути. В Qt SDK вы ничего и не должны были менять, но мало ли. Пользовательский PATH у меня отсутствует. Только Path в системных переменных. Значит мне создать в пользовательской колонке переменную PATH а потом конфиг делать? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 18:27 Если он у вас отсутствует, то как тогда у вас находится тот же mingw32-make? Где-то ведь прописан путь к Qt Creator. Посмотрите в системной переменной PATH.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 18:37 Если он у вас отсутствует, то как тогда у вас находится тот же mingw32-make? Где-то ведь прописан путь к Qt Creator. Посмотрите в системной переменной PATH. в переменной Path (она именно с таким регистром букв написана) вот это есть. Код: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Autodesk\Backburner\;C:\Program Files\Common Files\Autodesk Shared\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\ еще есть PATHEXT. А больше ничего такого нету что связано с PATH Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 22:43 так как мне быть? Уважаемый Dendy :)
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 22:45 Обьясните мне, как, распаковывая Qt в чистую директорию, открывая там шелл и запуская configure.exe этот самый configure.exe узнаёт где лежит mingw?
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 22:47 Обьясните мне, как, распаковывая Qt в чистую директорию, открывая там шелл и запуская configure.exe этот самый configure.exe узнаёт где лежит mingw? Если честно, понятия не имею ;D Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 22:49 Скорее всего он находит её в переменной окружения. Ваша задача - выяснить как он находит mingw и сделать так, чтобы не находил.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 22:55 Скорее всего он находит её в переменной окружения. Ваша задача - выяснить как он находит mingw и сделать так, чтобы не находил. Я излазил все переменные здесь Мой Компьютер -> Свойства -> Дополнительно -> Переменные Среды и там ничего относящегося к Qt нету ??? Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 24, 2009, 23:07 Чудес не бывает, ищите.
Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 24, 2009, 23:08 Название: Re: Проблемы после сборки Qt в статику Отправлено: crackedmind от Декабрь 25, 2009, 02:22 блин, сделай set, покажи нам...
Название: Re: Проблемы после сборки Qt в статику Отправлено: Dendy от Декабрь 25, 2009, 02:45 Сейчас угадаю, следующий вопрос будет - "Как?" (-: Открываешь терминал, печатаешь "set", потом Enter. Вывод - сюда.
Название: Re: Проблемы после сборки Qt в статику Отправлено: crackedmind от Декабрь 26, 2009, 02:38 В общем так.
Применив все свои телепатически способности, я нашел корень проблем =) В этом посте (http://www.prog.org.ru/index.php?topic=11783.msg73454#msg73454) Dendy написал как указать этот параметр линкеру. Но не правильно. Должна выдаваться следующая ошибка. Код: mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: unrecognized -a option `tic-libgcc' Но, как мы видим уже в этом посте (http://www.prog.org.ru/index.php?topic=11783.msg73504#msg73504) G-Virus допустил еще одну ошибку в указанию параметра, и предыдущая ошибка трансформировалась в ошибку No such file... Перечислю ошибки. 1. QMAKE_LFLAGS_RELEASE = -Wl,-s,-static-libgcc (Dendy) 2. QMAKE_LFLAGS_RELEASE = -Wl,-s, -static-libgcc (G-virus) Gcc к таким выходкам неравнодушен =)) Единственный верный способ - QMAKE_LFLAGS_RELEASE = -Wl,-s -static-libgcc P.S. Жду письма с пивом в аттаче :)) Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 26, 2009, 19:02 P.S. Жду письма с пивом в аттаче :)) Щас точно так же сделаю. А потом решим, пиво тебе, или 21-ый палец :) Название: Re: Проблемы после сборки Qt в статику Отправлено: G-virus от Декабрь 26, 2009, 19:11 Щас точно так же сделаю. А потом решим, пиво тебе, или 21-ый палец :) Ну.....все таки пиво. Но точнее бутылку от пива.....почему exe файл перед первым запуском повисает на минут 5? Хотя все таки бутылку пива! :) Даём НАКОНЕЦ-ТО QT РАБОТАЕТ!!!!!!! ААААААААААА!!! :D 8) Название: Re: Проблемы после сборки Qt в статику Отправлено: Alex03 от Март 02, 2010, 11:28 А не правильней ли
Цитировать QMAKE_LFLAGS_EXCEPTIONS_OFF = -static-libgcc У меня работает, и по всей видимости всё будет правильно независимо от того как вызывался configure, с no-exceptions или нет. |