Компиляция x264 для i386 - PullRequest
       28

Компиляция x264 для i386

3 голосов
/ 25 августа 2011

Как бы я скомпилировал библиотеку x264 для архитектуры i386? Обычно для форсирования архитектуры я использовал бы следующую команду:

./configure CC="gcc -arch i386" CXX="g++ -arch i386"

Но, похоже, он не работает для x264.

Для компиляции x264 я его настраиваю и создаю, это создает библиотеку x86_64. Когда я пытаюсь использовать приведенную выше команду для форсирования архитектуры i386, я получаю следующее сообщение:

Неизвестная опция CC = gcc -arch i386, игнорируется Неизвестная опция CXX = g ++ -arch i386, игнорируется

Затем скрипт configure печатает, что он настроен для платформы X86_64. Я хочу видеть его настроенным для платформы i386 и для создания двоичного файла i386.

Ответы [ 4 ]

5 голосов
/ 25 августа 2011
Сценарии

с автоматической настройкой configure имеют специальные аргументы командной строки --build и --host, которые они используют для настройки кросс-компиляции. Некоторые старые сценарии конфигурации пытаются выяснить, что они кросс-компиляции, проверяя выходные данные компилятора, но явное указание сценария конфигурации гораздо разумнее и надежнее.

См. здесь , например. Или этот вопрос .

(О, и непосредственная причина ошибок "Неизвестная опция", которые вы видите, заключается в том, что переопределения переменных среды идут до имени сценария в командной строке sh, а не после него. Это не make, где определения переменных могут быть даны в самой командной строке make.)

4 голосов
/ 29 ноября 2012

После прочтения скрипта configure и файла config.sub я обнаружил следующее для работы над сборкой i386-версии libx264:

./configure --host=i386-apple-darwin

Я также столкнулся с ошибкой "не найден компилятор C" в одной точке. Я установил переменную среды LDFLAGS на что-то не так. Поэтому убедитесь, что LDFLAGS и CFLAGS пусты (или исправны), прежде чем продолжить.

export CFLAGS=""
export LDFLAGS=""
2 голосов
/ 25 августа 2011

Если у вас есть x86-64 gcc, вы можете указать «-m32», чтобы попросить его скомпилировать 32-битный двоичный файл. Так что вы должны быть в состоянии использовать configure следующим образом:

./configure CFLAGS="-m32"

Если, однако, это не работает, это может быть ошибка в автоинструменте, и CFLAGS перезаписываются. Альтернатива, которую вы можете попробовать:

make CFLAGS="-m32"

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

0 голосов
/ 27 августа 2011

Согласно рекомендациям Apple на http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html попробовать:

./configure
make CFLAGS="-arch i386" LDFLAGS="-arch i386"

Если это не сработает, добавьте также флаги -isysroot (но 10.6 или 10.7, а не 10.4u)

...