我已经使用 brew 软件包golang
在Debian Linux 10中安装了 Go 1.13.4 (以前,我已经删除了安装的golang-1.11
通过 apt )。紧随brew info
输出。
$ brew info golang
go: stable 1.13.4 (bottled), HEAD
Open source programming language to build simple/reliable/efficient software
https://golang.org
/home/linuxbrew/.linuxbrew/Cellar/go/1.13.4 (9,271 files, 408.1MB) *
Poured from bottle on 2019-12-07 at 14:31:52
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/go.rb
==> Requirements
Required: macOS is required ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 1,571 (30 days), 8,628 (90 days), 31,650 (365 days)
install-on-request: 784 (30 days), 4,096 (90 days), 13,267 (365 days)
build-error: 0 (30 days)
当我尝试在具有代码调用go build
的程序包上执行native OS functions
时, GO编译器告诉它无法找到如下所示的gcc-5
命令。
$ go build
# _/home/giacomo/src/goproc/process
exec: "gcc-5": executable file not found in $PATH
因此,我已经从 testing (deb http://ftp.us.debian.org/debian testing main contrib non-free
)存储库中安装了最新的 GCC(9.2.1),并创建了指向{{1}的符号链接}。
这解决了问题。但是问题是:这是解决问题的正确方法吗?还是可以适当地配置 golang 使用的 GCC ?
非常感谢任何澄清!
答案 0 :(得分:2)
由于看起来您已经使用Linuxbrew安装了go
,所以也可以安装gcc-5
:
brew install gcc@5
这为我彻底解决了问题。
答案 1 :(得分:1)
(不是一个真正的答案,因为您问的不是一个真正的问题,请参阅下文。)
您的情况似乎有很多问题;让我们考虑一下。
首先要考虑的是,“ Go”意味着两件事:具有特定语法和语义的语言,以及其中的实现之一。
Go-the-language至少有两个成熟的实现:“参考”(一种可以从Go的main site中获得),另一种是GCC的一部分。股票的当代Debian发行版(Debian 10,“ Buster”)都将它们同时发布:golang-go
是前者,gccgo
是后者。
如您所见,首先不清楚安装的是哪个。
要考虑的第二件事是,引用实现(由于我忘记了原因,被其原始开发人员称为gc
)是完全独立的(甚至是自启动的),并且不使用任何C编译器( (来自GCC或其他组织)来构建Go代码。相反,gccgo
自然使用GCC工具链的其他部分来构建Go代码。
仍然,Go代码具有称为cgo
的特殊子系统,可用于将Go代码与用C编写的代码(以及遵循C API的已编译库)进行接口。在构建使用{{1 }},这两个Go套件 do 至少都依赖C编译器(并且可能是链接器,我不确定这是肯定的),并且默认情况下cgo
希望能够使用兼容GCC的编译器,自然gc
也使用GCC的C编译器。
现在让我们回顾一下。
您应该现在应该看到的,至少应该为您整理几件事:
gccgo
所安装的确实是您想要得到的吗?brew
?要考虑的第四件事是,为什么在地球上您决定使用一种发明的方法来帮助Mac用户弥补其平台上缺少软件包管理系统来处理Debian中的软件包。
Debian已经发布了Go;如果您对它的打包版本(1.11)不满意,那么仅从https://golang.org/dl获取最新,最伟大的二进制包,解开并使用它似乎更简单。
要考虑的另一件事是,由于1.5版Go是用Go语言编写的,因此它是自引导的,因此,如果您想拥有最新的上游版本,则可以cgo
来拥有 some < / em>版本的Go安装了-然后使用它来构建最新版本,例如:
获取Go源代码:
apt install golang-go
选择您要构建的版本:
$ cd ~
$ mkdir golang
$ git clone https://github.com/golang/go golang
然后确保您的$ cd golang
$ git checkout go1.13.5
$ cd src
$ ./make.bash
中列出了/home/user/golang/bin
。
请注意,构建Go的过程非常快:在配备SSD的笔记本电脑上,它可以在一分钟内从冷启动中构建出来。
答案 2 :(得分:1)
另一种尝试的方法是将CC
环境变量设置为gcc
。
答案 3 :(得分:0)
在 linuxbrew 中遇到了这个问题。修复运行:
go env -w CC=gcc CXX="g++"
这使用系统 gcc/g++ 而不是来自 linuxbrew 的那些