{ "@context": "https://schema.org", "@type": "Article", "headline": "在 mac 上构建 amd64 的 go 二进制文件时,使用 uname 获取处理器架构会导致错误结果", "datePublished": "2024-02-07T15:35:29", "dateModified": "2024-02-07T15:35:29", "description": "偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《在 mac 上构建 amd64 的 go 二进制文件时,使用 uname 获取处理器架构会导致错误结果》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!问题内容我有一个 golang 服务,需要获取处理器的架构类型archCmd := exec.Command(uname, -m)arch, _ := ar", "publisher": { "@type": "Organization", "name": "Golang学习网", "url": "https://m.17golang.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://m.17golang.com/article/93216.html" } }
登录
首页 >  Golang >  Go问答

在 mac 上构建 amd64 的 go 二进制文件时,使用 uname 获取处理器架构会导致错误结果

来源:stackoverflow

时间:2024-02-07 15:35:29 219浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《在 mac 上构建 amd64 的 go 二进制文件时,使用 uname 获取处理器架构会导致错误结果》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我有一个 golang 服务,需要获取处理器的架构类型

archCmd := exec.Command("uname", "-m")
arch, _ := archCmd.CombinedOutput()

我在 Intel 和 Arm 机器上运行相同的二进制文件。二进制文件是用

构建的
GOOS=darwin GOARCH=amd64

在 ARM 机器上,这会获取 x86_64。自从我使用 GOARCH=amd64 构建以来,似乎就发生了这种情况。但我不确定为什么会发生这种情况。 如果我想在 intel 和 arm 机器上运行相同的构建二进制文件,我的替代方案是什么?


正确答案


引用@hrdy描述此问题的评论:

引用单独的超级用户答案:https://superuser.com/a/1735265/443147

...这将需要一些条件逻辑来检测操作系统以及解析以检测 Apple CPU 类型。如果此字符串值发生更改,这可能会在将来中断。

archCmd := exec.Command("sysctl", "machdep.cpu.brand_string")
arch, _ := archCmd.CombinedOutput()

再次,归功于 @selalerercapitolis 的答案链接。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>