Kompilieren Sie die Quelle so, dass sie zwischen Verzeichnissen portierbar ist

Kompilieren Sie die Quelle so, dass sie zwischen Verzeichnissen portierbar ist

Ich installiere nginxeinen Server und muss ihn verteilen. Der Endbenutzer kann ihn also von jedem beliebigen Verzeichnis aus ausführen. Meine nginxausführbare Datei ist mit meinem Pfad, den ich bei der Kompilierung erhalten habe, fest codiert.

Wie macht man das portabel?

BEARBEITEN:

wenn ich Änderungen in dieser nginxausführbaren Datei vorgenommen habe, startet sie nicht, sondern wirft Fehler wieSegmentierungsfehler: Core-Dump. Bitte helfen Sie, das Problem zu lösen.

Antwort1

Mir fallen vier Optionen ein: -

  1. Codieren Sie die Anwendung so, dass sie relative Verzeichnisse verwendet, und geben Sie an, dass sie vom Kopf des Datenverzeichnisbaums aus gestartet werden soll.
  2. Geben Sie an, dass Umgebungsvariablen zum Definieren der Datenspeicherorte festgelegt werden sollen (Sie können einen relativen Pfad vom $HOMEVerzeichnis verwenden, wenn Sie keine neuen, expliziten Variablen definieren möchten).
  3. Verwenden Sie eine .appoder .config/appKonfigurationsdatei, um die Speicherorte anzugeben.
  4. Code mit einem festen Verzeichnispfad und Angabe, dass an dieser Stelle ein symbolischer Link erstellt werden soll, der auf die realen Speicherorte verweist.

Was Ihren Segmentierungsfehler betrifft, scheint es, dass Sie eine Fehlerprüfung verpasst haben (z. B. sicherzustellen, dass ein Dateizeiger nicht null ist).

verwandte Informationen