問題:
複数のパッケージを含む Go プログラムをコンパイルする場合、一部のパッケージに特定のアーキテクチャにのみ適用される依存関係 (CGo など) が含まれている場合、エラーが発生する可能性があります。このような場合、非ターゲット アーキテクチャのコンパイル中にそのようなファイルを除外することをお勧めします。
解決策:
Go のビルド制約は、条件付きで または を含める方法を提供します。ターゲット アーキテクチャを含むさまざまな条件に基づいてソース ファイルを除外します。使用方法は次のとおりです:
ファイルにビルド制約を追加します:
除外するソース ファイルの先頭に、 // build で始まるコメント行。このディレクティブに続いて、ファイルをコンパイルする条件を指定します。たとえば、Linux を除くすべてのアーキテクチャのファイルを除外するには:
// +build !linux
386 を除くすべてのアーキテクチャのファイルを除外するには:
// +build !386
CGo が有効な場合にファイルを除外するには:
// +build !cgo
を使用するファイル命名規則:
または、ファイル命名規則を使用してビルド制約を指定できます。たとえば、ファイルに package_linux.go という名前を付けると、そのファイルは Linux 用にビルドする場合にのみ組み込まれます。
例:
次のことを考慮してください。ディレクトリ構造:
- main.go - linux.go - windows.go
Linux 用にプログラムをコンパイルするには、次のビルド制約を linux.go に追加します:
// +build linux
Windows 用にプログラムをコンパイルするには、次のビルド制約を linux.go に追加します。 windows.go:
// +build windows
ビルド制約を使用すると、さまざまなアーキテクチャのコンパイル中に必要なコードのみが確実に含まれるようになり、ターゲット以外でアーキテクチャ固有のファイルをコンパイルしようとする問題が解決されます。プラットフォーム。
以上がコンパイル中にアーキテクチャに基づいて Go ソース ファイルを除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。