ホームページ >バックエンド開発 >Golang >ARM64 バイナリをビルドするときに gotvm を無視する方法

ARM64 バイナリをビルドするときに gotvm を無視する方法

PHPz
PHPz転載
2024-02-05 21:27:07542ブラウズ

如何在构建 ARM64 二进制文件时忽略gotvm

質問内容

goarch=arm64 gotvm/* のときに myrepo/ を無視するように go リポジトリを構築したい 他の場合は完全なリポジトリを構築します。

プロジェクトのフォルダー構造は次のとおりです:

リーリー

amd64 でビルドするとすべてが正常に動作します:

goos=linux goarch=amd64 go build -o amdbuild main.go

arm64 に基づいてビルド

goos=linux goarch=arm64 go build -o armbuild main.go

バイナリが作成される前に次のエラーが発生します:

リーリー

package gotvm (array.go, device.go, gotvm.go) を使用する場合は、次の行を追加します。各ファイルの先頭についても同様です:

リーリー

私が試したその他の手順:

  • クリーン -modcache
  • 次のビルド フラグを パッケージ gotvm に属するすべてのファイルの上に追加します (個別に)
  • リーリー
ここに同様の質問があります: (シミュレーション パッケージ) ただし、これではフォルダー全体が無視されます。

archarm64 でない場合、フォルダーを無視したいと考えています。

tl;dr; リポジトリを arm64 と amd64 にクロスコンパイルする方法はありますか? arm64 ビルドでは tvm を無視したいと考えています。 ###仕様:###

go バージョン:

go1.20.4 linux/amd64
  • システム: ubuntu 20.04.5 lts
正解

package句のみを含むgoファイルを

gotvm
フォルダに追加すると、この問題を解決できます。たとえば、

doc.go ファイル: リーリー ただし、この問題が発生した場合は、ほとんどの場合、このパッケージをインポートするファイルが少なくとも 1 つあり、goarch=arm64

がこのファイルを除外していないことを意味します。おそらく、このファイルからインポートを削除する必要があります (または、

goarch=arm64 の場合は、このファイルも除外します)。 問題を説明するためにデモを追加します。これらはファイルです: リーリー

go.mod

:

リーリー gotvm/gotvm.go

リーリー main.go

リーリー このデモでは、main.go

から

_ "example.com/m/gottvm" を削除するか、前述の doc.go ファイルを追加します。問題を解く。 main.go から _ "example.com/m/gotvm" を削除した方がよいと思います。

以上がARM64 バイナリをビルドするときに gotvm を無視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。