[sisyphus] qmake, target i586
Alexey Lubimov
=?iso-8859-1?q?avl_=CE=C1_l14=2Eru?=
Пн Июл 26 01:01:06 MSD 2004
Alex wrote:
> Sergey Vlasov пишет:
>
>> On Sat, Jul 24, 2004 at 11:18:40PM +0600, Alex wrote:
>>
>>
>>> Есть проект, накоденый с использованием Qt (не KDElibs). configure
>>> не используется, Makefile строится qmake'ом. Как в данном случае
>>> правильно собрать пакет под i586? При вызове rpm -bb --target i586
>>> имя_проекта.spec создаётся файл имя_проекта.i586.rpm, но я же вижу,
>>> что компилятору указывалось -mcpu=i686! Архитектура определилась
>>> qmake'ом, а опция target была игнорирована. Или configure должен
>>> ОБЯЗАТЕЛЬНО присутствовать и обрабатывать опции?
>>>
>>
>>
>> Вот стандартные опции:
>>
>> $ grep '^%optflags\>' /usr/lib/rpm/i586-alt-linux/macros
>> %optflags %optflags_default -march=i586 -mcpu=i686
>>
>> Опция -march=... устанавливает ограничения на использование команд
>> (определяет самый старый процессор, на котором запустится
>> скомпилированная программа). Опция -mcpu=... определяет, под какой
>> процессор оптимизируется код, но не влияет на разрешённый набор
>> команд. Т.е., в данном случае результат компиляции будет работать на
>> i586, но при оптимизации будет отдаваться предпочтение более
>> эффективной работе на i686.
>>
>>
>>
>>
> Спасибо!
> P.S.
> Если не задавать target вообще, то результат одентичен target i586 (
> то есть компилеру передаётся -march=i586 -mcpu=i686 (это сгенерил
> qmake) ).
>
задание опции target дает два эффекта.
1) rpm учитывает архитектуру и не даст поставить на i386 пакет i586
2) при сборке RPM заполняет переменные архитектуро зависимыми опциями
RPM_OPT_FLAGS и RPM_CFGAGS* которые можно использовать в спеке.
Подробная информация о списке рассылки Sisyphus