Problem:
Beim Kompilieren eines Go-Programms mit mehreren Paketen , können Fehler auftreten, wenn einige Pakete Abhängigkeiten enthalten (z. B. CGo), die nur für bestimmte Architekturen gelten. In solchen Fällen möchten Sie möglicherweise solche Dateien während der Kompilierung für Nicht-Zielarchitekturen ausschließen.
Lösung:
Build-Einschränkungen in Go bieten eine Möglichkeit, oder bedingt einzuschließen Schließen Sie Quelldateien basierend auf verschiedenen Bedingungen aus, einschließlich der Zielarchitektur. So verwenden Sie sie:
Build-Einschränkung zu Dateien hinzufügen:
Fügen Sie oben in der Quelldatei, die Sie ausschließen möchten, eine hinzu Kommentarzeile beginnend mit // build. Geben Sie im Anschluss an diese Anweisung die Bedingungen an, unter denen die Datei kompiliert werden soll. Um beispielsweise eine Datei für alle Architekturen außer Linux auszuschließen:
// +build !linux
So schließen Sie eine Datei für alle Architekturen außer 386 aus:
// +build !386
So schließen Sie eine Datei aus, wenn CGo aktiviert ist:
// +build !cgo
Dateibenennungskonvention verwenden:
Alternativ können Sie die Dateibenennungskonvention verwenden, um Build-Einschränkungen anzugeben. Wenn Sie beispielsweise eine Datei „package_linux.go“ nennen, wird sie nur beim Erstellen für Linux einbezogen.
Beispiel:
Bedenken Sie Folgendes Verzeichnisstruktur:
- main.go - linux.go - windows.go
Um das Programm für Linux zu kompilieren, fügen Sie die folgende Build-Einschränkung zu linux.go hinzu:
// +build linux
Um das Programm für Windows zu kompilieren, fügen Sie den folgenden Build hinzu Einschränkung für Windows.go:
// +build windows
Durch die Verwendung von Build-Einschränkungen können Sie sicherstellen, dass beim Kompilieren für verschiedene Architekturen nur der erforderliche Code einbezogen wird, und so das Problem lösen, dass versucht wird, architekturspezifische Dateien auf nicht zu kompilieren -Zielplattformen.
Das obige ist der detaillierte Inhalt vonWie kann ich Go-Quelldateien basierend auf der Architektur während der Kompilierung ausschließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!