Кросс-компиляция nginx-1.0.11 - PullRequest
3 голосов
/ 19 января 2012

Я хочу знать, как кросс-компилировать nginx-1.0.11.

Я уже попробовал: --with-cc option но это дает мне ошибку: проверка на компилятор C ... найден, но не работает

. / Configure: ошибка: не найден компилятор C arm-linux-gcc

- with-cc-opt также не работает. Я также пытался изменить компилятор вручную (изменив Makefile).

Я уже установил arm-linux-gcc и он работает нормально с openssl (он успешно пересекает скомпилированный openssl. Так что проблема не в компиляторе arm-linux).

Любая помощь будет высоко оценена .. Заранее спасибо. :)

Ответы [ 5 ]

1 голос
/ 31 марта 2014

Я просто собираю v 1.4.7 таким образом

./configure --with-ld-opt=-L/path/to/libfolder \
   --with-cc-opt=-I/path/to/include  --prefix=./nginx
make CC=arm-linux-gnueabi-gcc
make install

- префикс nginx устанавливается без изменений.

./nginx/sbin/nginx
1 голос
/ 15 октября 2013

Я успешно кросс-скомпилировал nginx, сначала создав конфигурацию на моем настольном компьютере (./configure --without-pcre --without-http_rewrite_module), затем просто отредактировав команду 'cc' в / objs / Makefile, чтобы указать правильный GCC. Makefile, который создает configure, невероятно прост. Просто убедитесь, что все переменные окружения установлены правильно (CC, LD, LIBS и т. Д.)

1 голос
/ 21 февраля 2012

Я запустил ./configure для своего хоста ia32 Linux и собрал его (чтобы убедиться, что он работает), затем 1) удалил все объектные файлы, 2) отредактировал objs / Makefile, чтобы изменить значение CC, добавить пути включения для моего компилятора и пути к библиотекам для моего компоновщика 3) скопировал некоторые заголовочные файлы из / usr / include в локальный каталог

Проблема в том, что если / usr / include находится в пути поиска, он ищется перед файлами заголовков моего компилятора. Это стало проблемой, когда инструкции ассемблера x86 были включены в определение htonl ().

Альтернативой является взломать conf / cc / gcc, чтобы добавить опцию и выполнить там настройки, включая поддержку переменной оболочки CROSS. Я еще этого не сделал.

1 голос
/ 05 мая 2012

Рассматривали ли вы настройку QEMU - http://wiki.qemu.org/Main_Page и облегченное изображение от linaro - http://www.linaro.org/. Я не проверял этот подход, но могу вам сказать, что я успешно скомпилировал и запустил nginx намой Pandaboard ARM v7a.

1 голос
/ 01 февраля 2012

Нет простого ответа.У nginx есть собственная система конфигурации, отличная от autoconf, которая в настоящее время не поддерживает кросс-компиляцию.

Либо взломайте систему конфигурации, либо избегайте ее, либо дождитесь, пока nginx добавит поддержку кросс-компиляции.

См. http://forum.nginx.org/read.php?29,220607, где вопрос недавно обсуждался.

...