为什么 – 错误导致configuration错误

我想从源代码生成nginx。 所以我写了一个bash脚本来做到这一点:

#!/bin/bash export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH" dir=$(realpath `dirname $BASH_SOURCE`) cd $dir/modules for folder in * do ADD_MODULES="$ADD_MODULES \ --add-module=$dir/modules/$folder" done cd $dir/nginx ./auto/configure \ --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/lib/nginx/tmp/client_body \ --http-proxy-temp-path=/var/lib/nginx/tmp/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \ --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi \ --http-scgi-temp-path=/var/lib/nginx/tmp/scgi \ --pid-path=/run/nginx.pid \ --lock-path=/run/lock/subsys/nginx \ --user=nginx \ --group=nginx \ --with-file-aio \ --with-ipv6 \ --with-http_ssl_module \ --with-http_spdy_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module \ --with-http_image_filter_module \ --with-http_geoip_module \ --with-http_stub_status_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_stub_status_module \ --with-http_perl_module \ --with-mail \ --with-mail_ssl_module \ --with-pcre \ --with-debug \ $ADD_MODULES \ --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' \ --with-ld-opt='-Wl,-z,relro -Wl,-E' if [ $? -ne 0 ]; then exit fi read -p 'Run make & make install? [Y/n]> ' RUN if [ "x$RUN" = "x" -o "x$RUN" = "xY" -o "x$RUN" = "xy" ]; then make -j8 make install fi 

当我运行这个脚本时, configure成功,但是在编译期间有一个警告对待错误( unused-but-set-variable ),并且退出时出现这个错误。

所以,我编辑“–with-cc-opt”选项,将“-Wall”更改为“-Werror”,这次configure失败并显示错误

 ./auto/configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries. You can either do not enable the module or install the libraries. 

然后我将“-Werror”改为“-Werror = unused-but-set-variable”,并configure失败并显示错误

 ./auto/configure: no supported file AIO was found Currently file AIO is supported on FreeBSD 4.3+ and Linux 2.6.22+ only 

(我试图删除-W选项,但是和-Wall一样)

谁知道为什么?

编辑:

我通过编辑nginx configure选项文件解决…

我注意到make log的尾巴

cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -O2 -g -pipe -Werror=unused-but-set-variable -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -I src / core -I(…. etc

我觉得这些问题是nginx configure自动prepend一些CC-opt卧铺矿

所以我使用grep '\-Wall' ./auto -Rgrep '\-Werror' ./auto -Rfind它们并删除它。

现在我已经完成了CC标志的控制。

感谢R的回答:D

删除--with-file-aio选项。 这没有用。

除去--with-http_xslt_module选项或安装libxml2和libxslt。

一般来说,不要使用--with--enable选项,你不明白。

第一个问题(错误:HTTP XSLT模块需要libxml2 / libxslt)可以通过安装libxslt-devel数据包来解决。