Entfernen von Dateipfaden aus TEXT-Anweisungen in Go-Binärdateien
Problem:
Beim Erstellen von Go ausführbare Dateien, Pfadinformationen wie z „/Users/myuser/dev/go/src/fooapi/spikes/mongoapi.go“ ist häufig in den TEXT-Anweisungen innerhalb der Assembly enthalten. Diese Pfadinformationen können in bestimmten Szenarien unerwünscht sein.
Lösung:
Um Dateipfadinformationen zu entfernen, verwenden Sie währenddessen das Flag -trimpath in Verbindung mit -gcflags und -asmflags Der Build-Prozess:
CGO_ENABLED=0 go build -v -a -ldflags="-w -s" \ -gcflags=-trimpath=/Users/myuser/dev/go/src \ -asmflags=-trimpath=/Users/myuser/dev/go/src \ -o ./fooapi spikes/mongoapi.go
Wie es ist Funktioniert:
Durch die Übergabe von -trimpath an -gcflags und -asmflags werden alle Pfadinformationen aus der Elf-Binärdatei entfernt. Dadurch wird sichergestellt, dass die TEXT-Anweisungen in der Assembly nur die relevanten Funktionsnamen und Offsets enthalten, ohne die zugehörigen Dateipfade.
Überprüfung:
Sie können das Ergebnis mit überprüfen der objdump-Befehl des Go-Tools:
$ go tool objdump ./fooapi . . TEXT main.init(SB) api/spikes/mongoapi.go mongoapi.go:60 0x12768c0 65488b0c25a0080000 GS MOVQ GS:0x8a0, CX mongoapi.go:60 0x12768c9 483b6110 CMPQ 0x10(CX), SP mongoapi.go:60 0x12768cd 7663 JBE 0x1276932 . .
Wie Sie sehen können, der Dateipfad „/Users/myuser/dev/go/src/api/spikes/mongoapi.go“ wurde aus den TEXT-Anweisungen entfernt.
Zusätzliche Informationen:
Verwendung Das Strip-Tool zum Entfernen von Dateipfadinformationen wird nicht empfohlen, da es möglicherweise zu fehlerhaften ausführbaren Dateien führen kann. Das Flag -trimpath bietet eine kontrollierte und zuverlässigere Möglichkeit, das gewünschte Ergebnis zu erzielen.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateipfade aus Go Binary TEXT-Anweisungen entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!