Heim >Backend-Entwicklung >PHP-Tutorial >Behandeln von Problemen im Zusammenhang mit der Kompilierung von Nginx unter der Windows-Plattform

Behandeln von Problemen im Zusammenhang mit der Kompilierung von Nginx unter der Windows-Plattform

WBOY
WBOYOriginal
2016-08-08 09:26:571649Durchsuche
In diesem Artikel wird beschrieben, wie Sie Nginx unter Windows kompilieren. Weitere Informationen finden Sie in diesem Artikel Nginx auf der Win32-Plattform mit Visual C wurde ausführlich erklärt, es gibt jedoch immer viele Details im tatsächlichen Betriebsprozess, die hier aufgezeichnet werden.

Inhalt [ausblenden]

  • 1 FAQ
    • 1.1 Holen Sie sich die angegebene Version
    • 1.2 „stdint.h“: Keine solche Datei oder kein solches Verzeichnis
    • 1.3 „openssl/ssl.h“: Keine solche Datei oder kein solches Verzeichnis
    • 1.4 Datei kann nicht geöffnet werden „objs/lib/openssl-1.0.1e/lib/ssleay32.lib“
    • 1.5 Fehler C2220: Warnung wird als Fehler behandelt – „Objekt“-Datei wurde nicht generiert
    • 1.6 schwerwiegend Fehler C1010: Bei der Suche nach vorkompilierten Headern wurde ein unerwartetes Ende der Datei festgestellt. Haben Sie vergessen, „#include „ngx_config.h““ zur Quelle hinzuzufügen?
    • 1.7 Jedes Mal vollständig kompilieren
  • 2Zusammenfassung des Betriebsprozesses

Häufig gestellte Fragen

Die VS-Version, die ich verwende, ist VS2008, und ich bin darauf gestoßen die folgende Frage.

Holen Sie sich die angegebene Version

Manchmal benötigen wir nicht die neueste Version. Ich möchte beispielsweise die Version 1.20 herunterladen Zuerst habe ich hier nach der Versionsnummer 1.20 gesucht und bald festgestellt, dass sie f582d662cc408eb7a132c21f4b298b71d0701abb ist. Die folgende Ausführungssequenz kann die angegebene Version erhalten:

hg clone http://hg.nginx.org/nginx cd nginx hg co f582d662cc408eb7a132c21f4b298b71d0701abb

"stdint.h ”: Keine solche Datei oder kein solches Verzeichnis

Dieses Problem ist leicht zu lösen, laden Sie einfach die fehlende Header-Datei herunter. https://code.google.com/p/msinttypes/
Nach der Dekomprimierung platzieren Sie das Header-Dateiverzeichnis unter C:ProgrammeMicrosoft Visual Studio 9.0VCinclude (oder einem ähnlichen Verzeichnis).

"openssl/ssl.h": Keine solche Datei oder kein solches Verzeichnis

Führen Sie nmake -f objs/Makefile aus , kann dieses Problem auftreten. Wir sehen einen solchen Pfad (objs/lib/openssl-1.0.1e/openssl/include), aber er existiert tatsächlich nicht. Die Lösung besteht darin, „openssl-1.0.1e/openssl“ in „openssl-1.0.1e“ zu ändern.

vi nginx/objs/Makefile

Oder ändern Sie direkt die Konfiguration des generierten Makefile

vi auto/lib/openssl/conf vi auto/lib/openssl/make

Datei „objs/lib/openssl- kann nicht geöffnet werden“ 1.0.1e /lib/ssleay32.lib“

Ich weiß nicht, warum das Nginx-Projekt die OpenSSL-Bibliothek nicht generiert. Ich habe dieses Problem durch separates Kompilieren und Generieren von OpenSSL gelöst. Die Schritte sind wie folgt:

  • Perl installieren (ich verwende ActivePerl)
  • OpenSSL nach Laufwerk C extrahieren, cd C:openssl-1.0.1e
  • Perl ausführen Konfigurieren Sie VC-WIN32
  • Führen Sie cmd aus, ziehen Sie *“C:ProgrammeMicrosoft Visual Studio 9.0VCvcvarsall.BAT“* in cmd und führen Sie
  • Führen Sie msdo_ms in cmd aus
  • Führen Sie nmake aus in cmd -f msntdll.mak

Okay, legen Sie die manuell generierten libeay32.lib und ssleay32.lib in das Verzeichnis nginx/objs/lib/openssl-1.0.1e. Problem gelöst.

Fehler C2220: Warnung als Fehler behandelt – „Objekt“-Datei wurde nicht generiert

Werden CFLAGS -WX entfernt? Feld, dann das Makefile neu generieren und neu kompilieren

vi auto/cc/msvc #CFLAGS="$CFLAGS -WX"

Schwerwiegender Fehler C1010: Unerwartetes Ende der Datei beim Suchen nach vorkompilierten Headern festgestellt. Haben Sie vergessen, „#include“ hinzuzufügen? "ngx_config.h""?

Bei der Entwicklung von Windows-Modulen treten Probleme auf. Die erste Codezeile in jeder Quelldatei muss hinzugefügt werden. #include "ngx_config.h"*, wenn Sie dies nicht tun Ich möchte dazu die Kompilierungsparameter *-Yungx_config.h

Kompilieren

vollständig entfernen Wenn Sie diese Codezeile nmake -f objs/Makefile ausführen, muss sie jedes Mal vollständig kompiliert werden, was Zeitverschwendung ist. Der Grund dafür ist folgender.

objs/lib/openssl-1.0.1e/include/openssl/ssl.h: objs/Makefile

ssh. Die .h-Datei hängt von objs/Makefile* ab, aber wenn die Änderungszeit der ersteren immer früher ist als die der letzteren, wird der folgende Befehl immer ausgeführt string *objs/Makefile 🎜>

Zusammenfassung des Vorgangsprozesses

  • “C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat”
  • “C:\MinGW\msys\1.0\msys.bat”
  • cd /c/nginx
  • 生成makefile
auto/configure --with-cc=cl --builddir=objs --prefix= \ --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid \ --http-log-path=logs/access.log --error-log-path=logs/error.log \ --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp \ --http-proxy-temp-path=temp/proxy_temp \ --http-fastcgi-temp-path=temp/fastcgi_temp \ --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.32 \ --with-zlib=objs/lib/zlib-1.2.7 --with-openssl=objs/lib/openssl-1.0.1e \ --with-select_module --with-http_ssl_module --with-ipv6 \ --add-module=objs/lib/naxsi-core-0.48/naxsi_src
  • nmake -f objs/Makefile
  • 启动nginx
start nginx.exe -p "C:\nginx" nginx.exe -p "C:\nginx" -s reload nginx.exe -p "C:\nginx" -s quit

参考资料:
Windows下OpenSSL安装配置

本文由吴遥编写,转载请注明出处。
文章链接:http://www.wuyao721.com/nginx-building-windows.html

以上就介绍了windows平台下编译nginx相关问题处理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn