我正在尝试使用这些指令在Ubuntu 16.04.3 LTS上编译NGINX:
https://www.vultr.com/docs/how-to-compile-nginx-from-source-on-ubuntu-16-04
而不是nginx-1.13.1
,我尝试使用nginx-1.13.8
(主线),但在make
期间,我遇到了错误{ {1}}图书馆:
pcre
即使尝试按照说明操作,也要更改:( - fPIE)
...
objs/src/stream/ngx_stream_ssl_preread_module.o \
objs/ngx_modules.o \
-Wl,-Bsymbolic-functions -fPIC -pie -Wl,-z,relro -Wl,-z,now -ldl -lpthread -lpthread -lcrypt ../pcre-8.40/.libs/libpcre.a ../openssl-1.1.0f/.openssl/lib/libssl.a ../openssl-1.1.0f/.openssl/lib/libcrypto.a -ldl ../zlib-1.2.11/libz.a \
-Wl,-E
/usr/bin/ld: ../pcre-8.40/.libs/libpcre.a(libpcre_la-pcre_compile.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
../pcre-8.40/.libs/libpcre.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
objs/Makefile:328: recipe for target 'objs/nginx' failed
make[1]: *** [objs/nginx] Error 1
make[1]: Leaving directory '/home/user1/nginx-1.13.8'
Makefile:8: recipe for target 'build' failed
make: *** [build] Error 2
到:( - fPIC)
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
--with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'
错误仍然存在。我该如何解决这个问题?理想情况下,只需更改--with-cc-opt='-g -O2 -fPIC -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
--with-ld-opt='-Wl,-Bsymbolic-functions -fPIC -pie -Wl,-z,relro -Wl,-z,now'
参数?到目前为止,该系统是一个全新的设置。
答案 0 :(得分:0)
我有同样的问题。我尝试使用来自sticky-module-ng的粘性会话支持来构建Nginx安装。使用Ubuntu Nginx构建指南中的configure参数会产生pcre错误。我尝试添加openssl的nginx.org构建指南中的示例参数,现在我没有错误。
./configure \
--prefix=/usr/share/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--modules-path=/usr/lib/nginx/modules \
--build=Ubuntu \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-pcre=../pcre-8.40 \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.0f
然而,我对Nginx不太熟悉,不知道我是否遗漏了一些关键参数。
答案 1 :(得分:0)
遇到了同样的问题。
解决了这个问题CFLAGS="-g -O2 -fvisibility=hidden -fPIC" export CFLAGS LDFLAGS=-fPIC export LDFLAGS
然后进入../pcre8.40项目
./configure make
然后进入../zlib-1.2.11项目
./configure make
执行完./configure并在nginx项目中生成。
答案 2 :(得分:0)
尝试在nginx中包含此配置选项:
--with-pcre-opt='-g -Ofast -fPIC -m64 -march=native -fstack-protector-strong -D_FORTIFY_SOURCE=2' \
--with-zlib-opt='-g -Ofast -fPIC -m64 -march=native -fstack-protector-strong -D_FORTIFY_SOURCE=2' \
我刚刚设法通过这个额外的选择安装了nginx。