ruskar
@ruskar
Conflict Intelligence Team

Компиляция nginx 1.0.1?

Есть сервер на базе Ubuntu 9.10. Пытаюсь установить на него nginx-1.0.1. Да, я знаю что можно установить через apt-get install nginx, но мне нужно именно через компилирование. Опциии ./configure:
--with-pcre=/root/pcre-8.12 \
--error-log-path=/var/log/nginx.error.log \
--http-log-path=/var/log/nginx.access.log \
--user=www \
--group=www \
--with-zlib=/root/zlib-1.2.5 \
--with-openssl=/root/openssl-1.0.0d \
--with-http_ssl_module



Конфигурирование проходит нормально, никаких ошибок не выдаёт. Далее ввожу команду make, начинается создание объектных файлов и в конце он выдаёт:
In file included from /usr/include/features.h:378,
                 from /usr/include/stdlib.h:25,
                 from cryptlib.h:62,
                 from cryptlib.c:117:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: No such file or directory
make[3]: *** [cryptlib.o] Error 1
make[3]: Leaving directory `/root/openssl-1.0.0d/crypto'
make[2]: *** [build_crypto] Error 1
make[2]: Leaving directory `/root/openssl-1.0.0d'
make[1]: *** [/root/openssl-1.0.0d/.openssl/include/openssl/ssl.h] Error 2
make[1]: Leaving directory `/root/nginx-1.0.1'
make: *** [build] Error 2



Т.е. он не может найти файл stubs-64.h. Гугление показывает, что это файл из glibc-devel, который для Ubuntu называется libc6-dev. Делаю apt-get install libc6-dev, он отвечает, что он у меня уже самой последней версии.

Пробовал также в опции конфигурирования добавить строку:
--with-cc-opt="-m32 -march=i386"

но результат абсолютно тот же. Делал так же apt-get install gcc, apt-get install g++, чтобы устранить все зависимости — не помогло.

Где искать этот файл?

UPDATE: проблема решилась через установку apt-get install libc6-dev-amd64, но теперь после долгого «make» он выдаёт мне:
/usr/bin/ld: i386:x86-64 architecture of input file `/root/openssl-1.0.0d/.openssl/lib/libcrypto.a(bio_asn1.o)' is incompatible with i386 output
/usr/bin/ld: final link failed: Invalid operation
collect2: ld returned 1 exit status
make[1]: *** [objs/nginx] Error 1
make[1]: Leaving directory `/root/nginx-1.0.1'
make: *** [build] Error 2
  • Вопрос задан
  • 4487 просмотров
Пригласить эксперта
Ответы на вопрос 4
umcherrel
@umcherrel
если нужно x86_64 то убери:
--with-cc-opt="-m32 -march=i386"
либо поставить openssl-dev пакет для 32х битной архитектуры
Ответ написан
multifinger
@multifinger
Такое происходит когда версия нужного пакета отличается от установленной.
Иногда aptitude лучше работает с зависимостями и справляется там, где обычные «порошки» не могут.
Я бы попробовал переустановить (apt-get purge, aptitude update && aptitude install) openssl-dev, а потом libc6-dev
Ответ написан
@korotovsky
Сделай ты уже sudo apt-get build-dep nginx
Ответ написан
Комментировать
Obramko
@Obramko
> теперь после долгого «make» он выдаёт мне

Убрать --with-cc-opt="-m32 -march=i386"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы