【问题标题】:Golang cross-compilation: gccgo - unrecognized command line option `-marm`Golang 交叉编译:gccgo - 无法识别的命令行选项 `-marm`
【发布时间】:2015-01-09 19:23:35
【问题描述】:

我正在尝试为 linux/arm 编译一个 Go 应用程序,并在我的 Ubuntu 机器上不断遇到问题。当我在我的源目录中运行 GOOS=linux GOARCH=arm go build 时,我得到了大量的错误,这些错误是:

#github.com/huin/mqtt

gccgo:错误:无法识别的命令行选项`-marm`

运行 gccgo --help 通知我以 -g、-f -m (和其他)开头的选项将传递给 gccgo 启动的任何子进程,所以我不知道它将 -marm 发送到哪个进程.

有什么线索吗? Ubuntu 14.10 LTS,64 位

【问题讨论】:

  • 您能告诉我们您使用的是什么版本的 gcc 和 go 吗?
  • @DeanElbaz running gccgo --version 报告它是 Ubuntu 4.9.1-0ubuntu1。运行 gcc --version 报告这是 Ubuntu 4.8.2-19ubuntu1。我想知道这与它有什么关系,因为我最初是通过 apt-get 安装 golang,然后再将其删除并更新到最新版本。我对 Linux 很熟悉,但这些不同的版本有时会引起我的注意。
  • @DeanElbaz 花了最后几个小时从源代码编译 gccgo(以及 gcc 和 g++),它仍然在做同样的事情。肯定是子进程不知道-marm,但是不知道是哪个。

标签: linux go gccgo


【解决方案1】:

所以感谢 Dean 的提示,我已经解决了这个问题并解决了它。

问题是由于我通过 apt-get 安装 Go,然后删除它(通过 apt-get),然后从 golang 网站安装 Go。第一次安装时仍有遗留文件,可能是旧版本,因此不支持 -marm 标志。

无论如何我都打算擦除我的开发机器,所以我做了,再次安装了 Ubuntu,从网站安装了 Go(不是通过 apt-get),一切都在第一次运行。如果您不想擦除您的机器,那么请务必四处查看是否存在版本冲突。

我以前被这种事情困扰过(当通过 apt-get 安装 node.js 时,意识到它的许多版本已经过时,然后删除并通过源安装 node.js),所以如果有人阅读本文,在通过 apt-get 安装软件然后升级时要小心,因为您可能会遇到和我一样的版本问题!

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2017-04-09
    • 2021-01-28
    • 2021-08-05
    相关资源
    最近更新 更多