ホームページ  >  記事  >  バックエンド開発  >  Mac で uname を使用してプロセッサ アーキテクチャを取得すると、amd64 用の go バイナリをビルドするときに間違った結果が得られる

Mac で uname を使用してプロセッサ アーキテクチャを取得すると、amd64 用の go バイナリをビルドするときに間違った結果が得られる

王林
王林転載
2024-02-09 13:09:07517ブラウズ

当为 amd64 构建 go 二进制文件时,使用 uname 在 mac 中获取处理器架构会给出错误的结果

php エディタ Xigua は、amd64 build go バイナリ ファイルの処理中に問題を発見しました。 Mac システムでは、una​​me を使用してプロセッサ アーキテクチャを取得すると、不正確な結果が生じる可能性があります。この問題はコンパイルとビルドのプロセスに影響を与える可能性があるため、注意する必要があります。プロセッサ アーキテクチャを取得する正しい方法は、go の組み込み関数 runtime.GOARCH を使用することです。これにより、uname によって引き起こされるエラーを回避し、コンパイルと構築の正確さを保証できます。

質問内容

golang サービスがあり、プロセッサのアーキテクチャ タイプを取得する必要があります

リーリー

Intel マシンと Arm マシンで同じバイナリを実行しています。バイナリは

でビルドされます リーリー

ARM マシンでは、これは x86_64 を取得します。これは、 GOARCH=amd64 でビルドして以来発生しているようです。しかし、なぜこれが起こっているのかわかりません。 同じビルド バイナリを Intel マシンと Arm マシンで実行したい場合、代替手段は何ですか?

回避策

引用@hrdyこの問題を説明するコメント:

別のスーパーユーザーの回答を引用: https://www.php.cn/link/211fff9e65c0e47a790c629116e32996

...これには、オペレーティング システムを検出するための条件付きロジックと、Apple CPU タイプを検出するための解析が必要になります。この文字列値が変更されると、将来壊れる可能性があります。

リーリー

繰り返しになりますが、回答リンクについては @selalerercapitolis に感謝します。

以上がMac で uname を使用してプロセッサ アーキテクチャを取得すると、amd64 用の go バイナリをビルドするときに間違った結果が得られるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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