2010-05-17 7 views
0

Я компиляции моей программы с набором архитектуры дляНКУ архитектура вопрос

-mtune=i386 

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

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

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

Энди

ответ

2

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

2

Я думаю, что

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

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

RPM_ARCH="i386" 

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

+0

I объект! :-) Очень много неприятностей, потому что скрипт configure сгенерировал скот makefile размером 50 КБ, который содержит много ссылок на «i686». Эти ссылки также не исчезают при выполнении ./configure --target = i386 На самом деле не так просто проанализировать, что там происходит ... возможно, было бы легче создать мой собственный make-файл, чем возиться с авто сгенерированный ... – Andy