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

王林
リリース: 2024-02-09 13:09:07
転載
515 人が閲覧しました

当为 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!