Компиляция nginx 1.11.9 на CentOS 6 с OpenSSL 1.0.2k

Я использую CentOS 6 x64 и хочу скомпилировать nginx 1.11.9 против OpenSSL 1.0.2k, поэтому я могу использовать HTTP / 2.

Я загрузил openssl-1.0.2k в / usr / local / src:

[root @ qpat1 nginx-1.11.9] # ls /usr/local/src openssl-1.0.2k

Я пытаюсь скомпилировать nginx, используя следующие команды:

$ ./configure --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib64 / nginx / modules --conf-path = / etc / nginx / nginx.conf --error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx.pid --lock-path = / var / run / nginx.lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx - group = nginx --with-compat --with-file-aio --with-thread --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-httpv_sub_module --with-httpv_sub_module --with-http_with_sub --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 - fexceptions -fstack-protector --param = размер-ssp-буфера = 4 -m64 -mtun e = generic -fPIC '--with-ld-opt =' - Wl, -z, relro -Wl, -z, now -pie '--with-openssl = / usr / local / src / openssl-1.0.2k $ make

Некоторое время работает, а затем запускается:

objs / src / mail / ngx_mail_pop3_module.o \ objs / src / mail / ngx_mail_pop3_handler.o \ {{ 1}} objs / src / mail / ngx_mail_imap_module.o \ objs / src / mail / ngx_mail_imap_handler.o \ objs / src / mail / ngx_mail_smtp_module.o \ objs / src / mail / ngx_mail_smtp_handler.o \ objs / src / mail / ngx_mail_auth_http_module.o \ objs / src / mail / ngx_mail_proxy_module.o \ поток_объектов / srxc / srxc .o \ objs / src / stream / ngx_stream_variables.o \ objs / src / stream / ngx_stream_script.o \ objs / src / stream / ngx_stream_handler.o \ objs / src / stream / ngx_stream_core_module.o \ objs / src / stream / ngx_stream_log_module.o \ {{1 }} objs / src / stream / ngx_stream_proxy_module.o \ objs / src / stream / ngx_stream_upstream.o \ objs / src / stream / ngx_stream_upstream_round_robin.o \ objs / src /stream/ngx_stream_write_filter_module.o \ objs / src / stream / ngx_stream_ssl_module.o \ objs / src / stream / ngx_stream_realip_module.o \ objs / src / stream_limit_module / ngx o \ objs / src / stream / ngx_stream_access_module.o \ objs / src / stream / ngx_stream_geo_module.o \ objs / src / stream / ngx_stream_map_module.o \ objs / src / stream / ngx_stream_split_clients_module.o \ objs / src / stream / ngx_stream_return_module.o \ objs / src / stream / ngx_stream_upstream_hash_module.o \ }} OBJS / SRC / поток / ngx_stream_upstream_least_conn_module.o \ OBJS / SRC / поток / ngx_stream_upstream_zone_module.o \ OBJS / SRC / поток / ngx_stream_ssl_preread_module.o \ OBJS / ngx_modules .o \ -Wl, -z, relro -Wl, -z, теперь -pie -ldl -lpthread -lpthread -lcrypt -lpcre /usr/local/src/openssl-1.0.2k/.openssl/ lib / libssl.a /usr/local/src/openssl-1.0.2k/.openssl/lib/libcrypto.a -ldl -lz \ -Wl, -E / usr / bin / ld: /usr/local/src/openssl-1.0.2k/.openssl/lib/libssl.a(s23_meth.o): перемещение R_X86_64_32 против `.rodata 'не может использоваться при создании общего объекта; перекомпилировать с помощью -fPIC / usr / local / src / openssl-1.0.2k / .openssl / lib / libssl.a: не удалось прочитать символы: неверное значение collect2: ld вернул 1 статус выхода make [1]: *** [objs / nginx] Ошибка 1 make [1]: выход из каталога `/root/nginx-http2/nginx-1.11.9'{{1} } make: *** [build] Ошибка 2

Я перепробовал все, что мог придумать. Я выполнил найденные мной инструкции по устранению аналогичных проблем, чтобы скомпилировать OpenSSL с помощью -fPIC:

./ config -fPIC make depends make make install

Ничего вроде работает. Любой совет приветствуется.

1
задан 8 February 2017 в 06:11
2 ответа

Вдохновленный IRC, я обнаружил, что Makefile, сгенерированный скриптом configure nginx, не компилирует OpenSSL (или любые другие используемые вами источники, например zlib) с -fPIC . Редактирование сгенерированного Makefile (objs / Makefile), поиск команды openssl ./ config и добавление -fPIC в эту командную строку сделали его компилируемым.

3
ответ дан 3 December 2019 в 18:31

У меня есть инструкции, как для сборки Nginx из исходного кода ответ . Это было довольно просто. Я не создавал OpenSSL, я использовал двоичный файл.

0
ответ дан 3 December 2019 в 18:31

Теги

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