{"id":329514,"date":"2022-02-13T21:00:29","date_gmt":"2022-02-13T21:00:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=329514"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=329514","title":{"rendered":"<span>\u041a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f NGINX (\u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f GCC)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"128\" align=\"left\" data-src=\"https:\/\/habrastorage.org\/webt\/ou\/ym\/1v\/ouym1v-vz0ub67ul2dau5jr4nxo.png\" data-width=\"128\"\/><b>NGINX<\/b> \u2014 \u044d\u0442\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 TCP\/UDP \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c. \u0423\u0436\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.  <\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u00abTry Run\u00bb.  <\/p>\n<p>  <\/p>\n<p>\u0422\u0435 \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 <b>Autoconf<\/b>, <b>Automake<\/b> \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 (Try compile), \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (Try link) \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c (Try Run).  <\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043a\u0440\u043e\u0441\u0441-\u0441\u0431\u043e\u0440\u043a\u0435, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u00abTry Run\u00bb \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b, \u0432\u0435\u0434\u044c \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u0430\u0448\u0438\u043d\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441\u0431\u043e\u0440\u043a\u0438.  <\/p>\n<p>  <\/p>\n<p>\u0412 <b>Autotools<\/b> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0435\u0448\u0430\u044e\u0442c\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u0444\u0430\u0439\u043b\u0435 <i>&#8212;cache-file<\/i> \u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <b>.\/configure<\/b>.  <\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0418\u0433\u043e\u0440\u044f \u0421\u044b\u0441\u043e\u0435\u0432\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041a \u043d\u0438\u043c, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0438\u0445 \u043c\u044b \u0438 \u043d\u0430\u0447\u043d\u0435\u043c.  <\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <b>auto\/types\/sizeof<\/b>. \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445 \u0438 \u043f\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <b>ngx_size<\/b>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <b>gcc<\/b> \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 macro \u0421-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 <b>GCC<\/b>. \u0415\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <b>auto\/types<\/b> \u0441\u043a\u0440\u0438\u043f\u0442 <b>gcc-sizeof<\/b>:  <\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/bin\/sh  if [ \"x$NGX_CC_NAME\" = \"x\" -o \"x$ngx_type\" = \"x\" ] ; then   echo \"unknown\" fi  if [ \"$ngx_type\" = \"int\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_INT__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"long\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_LONG__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"long long\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_LONG_LONG__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"size_t\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_SIZE_T__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"sig_atomic_t\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_INT__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"void *\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_POINTER__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"off_t\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_PTRDIFF_T__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" elif [ \"$ngx_type\" = \"time_t\" ] ; then   size_from_cpp=`${CC} -dM -E - &lt; \/dev\/null | grep __SIZEOF_PTRDIFF_T__ | cut -f3 -d' ' | sed 's,^[ \\t]*,,' | sed 's,[ \\t]*$,,'`   echo \"$size_from_cpp\" fi <\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 <b>auto\/types\/sizeof<\/b> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <b>GCC<\/b>, \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442 <b>auto\/types\/gcc-sizeof<\/b>, \u0442\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0431\u0435\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:  <\/p>\n<p>  <\/p>\n<pre><code class=\"diff\">diff -b --unified -Nr nginx-1.20.2-orig\/auto\/types\/sizeof nginx-1.20.2\/auto\/types\/sizeof --- nginx-1.20.2-orig\/auto\/types\/sizeof2021-11-16 17:44:02.000000000 +0300 +++ nginx-1.20.2\/auto\/types\/sizeof2022-02-13 19:50:26.816530942 +0300 @@ -14,7 +14,8 @@    ngx_size=   -cat &lt;&lt; END > $NGX_AUTOTEST.c +if [ \"$NGX_CC_NAME\" != \"gcc\" ] ; then +  cat &lt;&lt; END > $NGX_AUTOTEST.c    #include &lt;sys\/types.h>  #include &lt;sys\/time.h> @@ -33,18 +34,21 @@  END     -ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\ +  ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\            -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs\"   -eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&amp;1\" +  eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&amp;1\"     -if [ -x $NGX_AUTOTEST ]; then +  if [ -x $NGX_AUTOTEST ]; then      ngx_size=`$NGX_AUTOTEST`      echo \" $ngx_size bytes\" +  fi +else +    ngx_size=`ngx_type=\"$ngx_type\" . auto\/types\/gcc-sizeof` +    echo \" $ngx_size bytes\"  fi   -  case $ngx_size in      4)          ngx_max_value=2147483647  <\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 big\/little endian \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 macro, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 <b>gcc-endianness<\/b> \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <b>auto<\/b>:  <\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/bin\/sh  if [ \"x$NGX_CC_NAME\" = \"x\" ] ; then   exit 0 fi  if `${CC} -dM -E - &lt; \/dev\/null | grep \" __BYTE_ORDER__ \" | cut -f3 -d' ' | grep -q \"_BIG_\"` ; then   exit 1 fi <\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 <b>endianness<\/b>:  <\/p>\n<p>  <\/p>\n<pre><code class=\"diff\">diff -b --unified -Nr nginx-1.20.2-orig\/auto\/endianness nginx-1.20.2\/auto\/endianness --- nginx-1.20.2-orig\/auto\/endianness2021-11-16 17:44:02.000000000 +0300 +++ nginx-1.20.2\/auto\/endianness2022-02-13 19:50:26.816530942 +0300 @@ -13,7 +13,8 @@  END     -cat &lt;&lt; END > $NGX_AUTOTEST.c +if [ \"$NGX_CC_NAME\" != \"gcc\" ] ; then +  cat &lt;&lt; END > $NGX_AUTOTEST.c    int main(void) {      int i = 0x11223344; @@ -26,12 +27,12 @@    END   -ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\ +  ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\            -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs\"   -eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&amp;1\" +  eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&amp;1\"   -if [ -x $NGX_AUTOTEST ]; then +  if [ -x $NGX_AUTOTEST ]; then      if $NGX_AUTOTEST >\/dev\/null 2>&amp;1; then          echo \" little endian\"          have=NGX_HAVE_LITTLE_ENDIAN . auto\/have @@ -41,10 +42,18 @@        rm -rf $NGX_AUTOTEST*   -else +  else      rm -rf $NGX_AUTOTEST*        echo      echo \"$0: error: cannot detect system byte ordering\"      exit 1 +  fi +else +  if `. auto\/gcc-endianness` ; then +      echo \" little endian\" +      have=NGX_HAVE_LITTLE_ENDIAN . auto\/have +  else +      echo \" big endian\" +  fi  fi <\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 <b>endianness<\/b> \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <b>gcc-endianness<\/b> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 little-endian \u0438 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 big-endian.  <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043a\u043e\u043d\u0447\u0438\u0432 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0431\u0430\u0439\u0442\u043e\u0432, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0430\u043c\u043e\u0433\u043e cross-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432 \u0444\u0430\u0439\u043b\u0435 <b>auto\/cc\/name<\/b>:  <\/p>\n<p>  <\/p>\n<pre><code class=\"diff\">diff -b --unified -Nr nginx-1.20.2-orig\/auto\/cc\/name nginx-1.20.2\/auto\/cc\/name --- nginx-1.20.2-orig\/auto\/cc\/name2021-11-16 17:44:02.000000000 +0300 +++ nginx-1.20.2\/auto\/cc\/name2022-02-13 19:50:26.816530942 +0300 @@ -7,7 +7,7 @@        ngx_feature=\"C compiler\"      ngx_feature_name= -    ngx_feature_run=yes +    ngx_feature_run=      ngx_feature_incs=      ngx_feature_path=      ngx_feature_libs= <\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <b>auto\/feature<\/b>. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0432 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u0434 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u044b. \u041e\u0442\u0432\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <b>ngx_found<\/b>. \u0415\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 \u044f\u0434\u0440\u0430 <b>Linux<\/b> \u0438 <b>GNU Libc<\/b>, \u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u0430 <b>auto\/feature<\/b>:   <\/p>\n<p>  <\/p>\n<pre><code class=\"diff\">diff -b --unified -Nr nginx-1.20.2-orig\/auto\/feature nginx-1.20.2\/auto\/feature --- nginx-1.20.2-orig\/auto\/feature2021-11-16 17:44:02.000000000 +0300 +++ nginx-1.20.2\/auto\/feature2022-02-13 19:50:26.816530942 +0300 @@ -52,6 +52,85 @@      case \"$ngx_feature_run\" in            yes) + +            if [ \"$ngx_feature_name\" = \"NGX_HAVE_GCC_ATOMIC\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_C99_VARIADIC_MACROS\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_GCC_VARIADIC_MACROS\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_EPOLL\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_SENDFILE\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_SENDFILE64\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_PR_SET_DUMPABLE\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_PR_SET_KEEPCAPS\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_MAP_ANON\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_MAP_DEVZERO\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            elif [ \"$ngx_feature_name\" = \"NGX_HAVE_SYSVSHM\" ] ; then +                echo \" found\" +                ngx_found=yes + +                if test -n \"$ngx_feature_name\"; then +                    have=$ngx_have_feature . auto\/have +                fi +            else              # \/bin\/sh is used to intercept \"Killed\" or \"Abort trap\" messages              if \/bin\/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&amp;1; then                  echo \" found\" @@ -64,6 +143,8 @@              else                  echo \" found but is not working\"              fi +            fi +          ;;            value) <\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u043e\u0442\u043e\u0432\u044b\u0439 patch \u0434\u043b\u044f <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 <b>1.20.2<\/b> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 <a href=\"https:\/\/csvn.radix.pro\/platform\/branches\/radix-1.8\/\" rel=\"nofollow noopener noreferrer\">Radix cross Linux<\/a> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b:  <\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">svn checkout svn:\/\/radix.pro\/platform\/branches\/radix-1.8 <\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0430 <b>radix-1.8\/sources\/packages\/n\/nginx<\/b> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>make<\/b>:  <\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">NO_CCACHE=1 make <\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u0441\u0431\u043e\u0440\u043a\u0438 patch \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <b>patches<\/b>.  <\/p>\n<p>  <\/p>\n<p>\u0412\u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <a href=\"https:\/\/csvn.radix.pro\/platform\/branches\/radix-1.8\/net\/nginx\/1.20.2\/\" rel=\"nofollow noopener noreferrer\">radix-1.8\/net\/nginx\/1.20.2<\/a>. \u0417\u0434\u0435\u0441\u044c \u0432 Make-\u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440.   <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Legacy \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GeoIP \u0438\/\u0438\u043b\u0438 \u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (&#8212;with-file-aio), \u043e \u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 \u044f\u0434\u0440\u0430 <b>Linux<\/b>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/646073\/\">\u0414\u0435\u043b\u0430\u0435\u043c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 Go, \u0440\u0443\u0433\u0430\u0435\u043c Linux<\/a>.  <\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/651213\/\"> https:\/\/habr.com\/ru\/post\/651213\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"128\" align=\"left\" data-src=\"https:\/\/habrastorage.org\/webt\/ou\/ym\/1v\/ouym1v-vz0ub67ul2dau5jr4nxo.png\" data-width=\"128\"\/><b>NGINX<\/b> \u2014 \u044d\u0442\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 TCP\/UDP \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c. \u0423\u0436\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.  <\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u00abTry Run\u00bb.  <\/p>\n<p>  <\/p>\n<p>\u0422\u0435 \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 <b>Autoconf<\/b>, <b>Automake<\/b> \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 (Try compile), \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (Try link) \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c (Try Run).  <\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043a\u0440\u043e\u0441\u0441-\u0441\u0431\u043e\u0440\u043a\u0435, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u00abTry Run\u00bb \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b, \u0432\u0435\u0434\u044c \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u0430\u0448\u0438\u043d\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441\u0431\u043e\u0440\u043a\u0438.  <\/p>\n<p>  <\/p>\n<p>\u0412 <b>Autotools<\/b> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0435\u0448\u0430\u044e\u0442c\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u0444\u0430\u0439\u043b\u0435 <i>&#8212;cache-file<\/i> \u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <b>.\/configure<\/b>.  <\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0418\u0433\u043e\u0440\u044f \u0421\u044b\u0441\u043e\u0435\u0432\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 <a href=\"https:\/\/nginx.org\/ru\/\" rel=\"nofollow noopener noreferrer\">NGINX<\/a> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041a \u043d\u0438\u043c, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0438\u0445 \u043c\u044b \u0438 \u043d\u0430\u0447\u043d\u0435\u043c.  <\/p>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-329514","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=329514"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329514\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=329514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=329514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=329514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}