вопрос архитектуры gcc - PullRequest
0 голосов
/ 17 мая 2010

Я компилирую свою программу с архитектурой, установленной на

-mtune=i386

Однако я также связываю статически с несколькими библиотеками (libpng, zlib, jpeglib, vorbisfile, libogg). Я создал эти библиотеки самостоятельно, используя configure и make, так что я думаю, что эти библиотеки были созданы с архитектурой, настроенной на архитектуру моей системы, которая будет i686. Но я не хочу этого! Я также хочу, чтобы моя программа работала на i386, поэтому я должен убедиться, что все эти библиотеки, с которыми я статически связываюсь, созданы и для i386.

Итак, мой вопрос: есть ли удобный способ собрать libpng / zlib / jpeglib / vorbisfile / libogg и т. Д. Для i386 или мне нужно вручную изменить все их make-файлы и убедиться, что -mtune установлен на i386?

Спасибо за помощь!

Энди

Ответы [ 2 ]

2 голосов
/ 17 мая 2010

Я думаю

CFLAGS="-march=i386 -O3" make ...

Может сработать, если они используют автоинструменты для генерации Makefile. Вы также можете извлечь файлы из RPM, если у них есть .a и заголовки для нужной версии. Или перейдите на SRPM и измените спецификации / скрипты для сборки для arch:

RPM_ARCH="i386"

Но на самом деле не так уж и много проблем, чтобы правильно перестроить библиотеки, чтобы вы ничего не пропустили. это не то, что вы собираете целый дистрибутив.

2 голосов
/ 17 мая 2010

--mtune только настраивает вывод команды (упорядочение, планирование и т. Д.), Но не гарантирует, что вывод только для i386, вот для чего --mcpu или --march или TARGET (i386-...)

...