Wie erstelle ich eine Release-Versions-Binärdatei in Go?

Lesezeit: 2 Minuten

Benutzeravatar von catric mia
Catric Mia

In C können wir eine Debug-Version oder eine Release-Version der Binärdateien (der Objektdateien und der ausführbaren Datei) erstellen. Wie können wir das in Go machen?

Benutzeravatar von hiwjd0
hiwjd0

In Go ist es nicht üblich, eine Debug-Version oder eine Release-Version zu haben.

Standardmäßig, go build kombiniert Symbol- und Debug-Informationen mit Binärdateien. Sie können das Symbol und die Debug-Informationen jedoch mit entfernen go build -ldflags "-s -w".

  • Hier gibt es eine Dokumentation dazu – golang.org/doc/gdb#Einführung.

    – Greg

    13. April 2015 um 7:44 Uhr

  • Sie haben Recht, aber ich denke, es gibt einen guten Grund, warum es nicht typisch ist, Symbole zu entfernen – wenn Sie zum Beispiel einen Bericht über eine Panik in freier Wildbahn erhalten, wäre es großartig, die Symbole für einen informativen Stacktrace dort zu haben .

    – zweizweizwei

    13. April 2015 um 7:56 Uhr

  • Ich denke, “-s” (Symboltabelle und Debug-Informationen weglassen) enthält bereits “-w” (ZWERG-Symboltabelle weglassen), daher sollte es nicht erforderlich sein, beide anzugeben. Mit der ausführbaren Datei, die ich ausprobiert habe, ergibt “-s -w” genau die gleiche Größe wie “-s” allein.

    – rob74

    13. April 2015 um 8:20 Uhr

  • Es scheint, dass -s GOOS=darwin nicht beeinflusst

    – Chris B.

    25. April 2017 um 14:05 Uhr


  • Ich habe gerade ein paar Experimente auf meinem Mac gemacht. Ergebnisse: -s impliziert nicht -w, Binärgröße mit/ohne -s ist gleich. -w reduziert die Binärdatei von 12 auf 8 MB. AUCH: Es gibt KEINEN Unterschied in Stack-Traces zwischen “go build”- und “-s -w”-Builds. Natürlich ist es nur für meine Software, wahrscheinlich gibt es Eckfälle.

    – Aleksandr Kravets

    23. Mai 2018 um 7:52 Uhr


Benutzeravatar von rob74
rob74

Sie können den Linker anweisen, Debug-Symbole zu entfernen, indem Sie verwenden

go install -ldflags '-s'

Ich habe es gerade auf einer ziemlich großen ausführbaren Datei (einer der GXUI Proben), und dies reduzierte sie von ~16 Millionen auf ~10 Millionen. Wie immer kann Ihr Kilometerstand variieren …

Hier ist eine vollständige Liste aller Linker-Optionen.

1418460cookie-checkWie erstelle ich eine Release-Versions-Binärdatei in Go?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy