Ich habe heute einen ganzen Tag daran gearbeitet und schließlich Nginx kompiliert, um Unterstützung für das RTMP-Modul hinzuzufügen. Dabei bin ich auf viele Probleme gestoßen. Ich habe diesen Artikel aufgezeichnet und hoffe, dass er Schülern helfen kann, die auf solche Probleme stoßen. 1. Vorbereitung:1. Laden Sie den Nginx-Quellcode herunter: wget http://xiazai.jb51.net/202112/yuanma/nginx_jb51.rar 2. Laden Sie den Quellcode der abhängigen Bibliothek libpcre.a herunter: wget http://ftp.cs.stanford.edu/pub/exim/pcre/pcre-8.39.tar.gz 3. Laden Sie den Quellcode der abhängigen Bibliothek libz.a herunter: wget http://xiazai.jb51.net/202112/yuanma/pcre_jb51.rar 4. Laden Sie den Quellcode des RTMP-Moduls herunter: GitHub - arut/nginx-rtmp-module: NGINX-basierter Media-Streaming-Server Nachdem der Quellcode der ersten drei Bibliotheken heruntergeladen wurde, werden sie alle dekomprimiert. 2. Quellcode-KompilierungDie pcre-Bibliothek und die libz-Bibliothek müssen nicht separat kompiliert werden. Sie werden beim Hinzufügen von Modulen beim Kompilieren von nginx zusammen kompiliert. 1. Konfigurierencd nginx-1.20.2 //Wechseln Sie zum Nginx-Quellverzeichnis./configure --prefix=/usr/sbin --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master --with-http_ssl_module --with-debug --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 --with-zlib=/home/tianyexing/Documents/tools/zlib/zlib-1.2.11 // --prefix=/usr/sbin gibt das Installationsverzeichnis an. Das während der endgültigen Installation generierte Programm wird in diesem Verzeichnis abgelegt. // --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master kompiliert das rtmp-Modul. Dies ist das Verzeichnis, in das der Quellcode nach dem Herunterladen oben entpackt wird. // --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 kompiliert das pcre-Modul. Dies ist das Verzeichnis, in das der Quellcode nach dem Herunterladen oben entpackt wird. // --with-zlib=/home/tianyexing/Documents/tools/zlib/zlib-1.2.11 kompiliert das zlib-Modul. Dies ist das Verzeichnis, in das der Quellcode nach dem Herunterladen oben entpackt wird. Da ich die arm-himix200-linux-Version kompilieren möchte, aber die Konfiguration im Nginx-Quellverzeichnis --host nicht unterstützt, verwende ich --with-cc=arm-himix200-linux-gcc schlägt ebenfalls fehl, Sie können es also nur manuell ändern (die Änderungspunkte werden weiter unten erläutert). Nach der Ausführung werden Objekte und Makefile im aktuellen Verzeichnis generiert. 1) Ändern Sie objs/Makefile 2) Ändern Sie die Datei nginx-1.20.2/auto/cc/conf beispielsweise: 3) Ändern Sie nginx-1.20.2/auto/types/sizeof, beispielsweise: Sie können nach weiteren Änderungen suchen, da ich mich an mehrere davon nicht erinnern kann. 2. KompilierungsfehlerMachen Sie es einfach im Nginx-Quellverzeichnis, da es objs/Makefile ausführt 1) Die Header-Datei openssl/ssl.h kann nicht gefunden werden, beispielsweise: Das System verfügt bereits über die Datei openssl/ssl.h, die sich im Systemverzeichnis /usr/include befindet. Beim Kompilieren wird jedoch angezeigt, dass es nicht gefunden werden kann. Ich weiß nicht, ob dies mit dem Kompilieren der Arm-Version zusammenhängt. Da ich zufällig die OpenSSL-Headerdatei dieser Arm-Version habe, habe ich mir hier nicht die Mühe gemacht und das OpenSSL-Verzeichnis von woanders kopiert und direkt verwendet. Nach dem Hinzufügen des Header-Dateiverzeichnisses müssen Sie jedoch objs/Makefile ändern. Mein neu hinzugefügtes Header-Dateiverzeichnis befindet sich im Nginx-Quellcodeverzeichnis src und die Änderung lautet wie folgt: Dieses CORE_INCS ist die Header-Datei, die zum Kompilieren von nginx verwendet wird. Dies ist das Header-Dateiverzeichnis, das von anderen Modulen, nginx-rtmp, pcre und zlib verwendet werden kann. 2) IPv6-Probleme Es wird angezeigt, dass diese Definition nicht gefunden werden kann, aber diese Definition existiert im System. Hier besteht kein Grund zur Sorge. Da IPv6 nicht verwendet wird, wird der entsprechende Code auskommentiert. 3) Das Archiv hat keinen Index. Führen Sie ranlib aus, um einen hinzuzufügen ---- Problem mit der Nichtübereinstimmung der Bibliotheksplattform Da es viele Male kompiliert wurde, wurden sowohl die x86-Version als auch die Arm-Version kompiliert, und dann gibt es kein Make Clean. Hier wird die vorherige x86-Version der Bibliothek verwendet, daher wird hier ein Fehler angezeigt, da ich die Arm-Himix200-Linux-Version kompilieren möchte. Überprüfen Sie die Bibliotheksinformationen wie: Sie müssen also „clean“ ausführen und dann die obige Konfiguration ausführen, um das Makefile neu zu generieren. 4) SSL-Bibliothek und Krypto-Bibliothek können nicht gefunden werden Es gibt die folgenden Links in objs/Makefile Fehler im letzten Link Ich habe diese ARM-Version der Bibliothek zuvor kompiliert und sie dann direkt in einen absoluten Pfad geändert. Wenn Sie diese beiden Bibliotheken nicht haben, googeln Sie sie. Endlich habe ich meine Arm-Version und meine x86-Version kompiliert. 3. Umsetzung auf dem ZielbrettBeim Kopieren in die Arm-Version zur Ausführung schlug es fehl, aber es gab keine Aufforderungsmeldung. Als Ergebnis gab nginx -s reload eine Fehlermeldung aus, wie etwa: Weil während der Konfiguration das Installationsverzeichnis --prefix=/usr/sbin angegeben wird. Nach Abschluss der Kompilierung werden drei neue Verzeichnisse sbin, conf und logs unter /usr/sbin erstellt. Die Verzeichnisse lauten wie folgt: Also habe ich die entsprechenden Verzeichnisse sbin, conf und logs auf dem Arm-Board erstellt und alle Dateien aus diesen Verzeichnissen dorthin kopiert. Das Ergebnis war erfolgreich: Es wurde festgestellt, dass es auf Port 1935 lauscht. Die ARM-Version wurde bereits kompiliert, konnte jedoch ebenfalls nicht erfolgreich ausgeführt werden, da der während der Konfiguration per Präfix angegebene Installationspfad ein Verzeichnis auf dem PC ist und das Ergebnis der oben beschriebene open()-Fehler ist. Wenn das durch --prefix angegebene Verzeichnis während der Konfiguration auf der Zielplatine nicht vorhanden ist, schlägt der Vorgang fehl. Wie kann dies geändert werden? Ich habe es noch nicht gefunden. Wenn es jemand weiß, lassen Sie es mich bitte wissen. Dies ist das Ende dieses Artikels zum Kompilieren der Arm-Version des Nginx-RTMP-Moduls. Weitere relevante Inhalte zum Nginx-RTMP-Modul finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Eine kurze Analyse der Verwendung des HTML-Webpack-Plugins
>>: Eine gängige Technik zur Implementierung von Dreiecken mit CSS (mehrere Methoden)
Das in diesem Beispiel entwickelte kaskadierende ...
Dieser Artikel darf gerne geteilt und zusammengef...
Ich glaube, jeder ist mit Datenbankindizes vertra...
1. löschen delete ist die einzige wirkliche Mögli...
1 Hintergrund JDK1.8-u181 und Tomcat8.5.53 wurden...
In diesem Artikel erfahren Sie, wie Sie mit think...
Inhaltsverzeichnis Vorwort HTTP HTTP-Server Datei...
Rand: automatisch; + Position: absolut; oben, unt...
Inhaltsverzeichnis 1. Übersicht über Docker Consu...
Dieser Artikel stellt einige häufig verwendete Fu...
Inhaltsverzeichnis Installieren Sie MySQL Konfigu...
Inhaltsverzeichnis Einführung Installieren 1. Ers...
Ein Kollege hat mir einmal gesagt, ich solle eine...
Vorwort Ab MySQL 5.7.11 unterstützt MySQL die Dat...
1. Einige aufgetretene Probleme Ich erinnere mich...