问题标签 [gccgo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
420 浏览

go - 用于 solaris/sparc 的 gccgo 上的 filebeat/libbeat 编译器

我正在为太阳能/SPARC 环境编译项目文件。Solaris 正式不支持 Elastic 工具。

Neamoins,有这个问题的规避/通过 gccgo 编译。我实际上准备了我的 gccgo 编译器。我可以编译一个小项目(带有单个文件 hello.go),如下所示。但是一旦我尝试编译 filebeat 项目,它就不起作用。可能是依赖问题。我不太了解。如果有人可以帮助我。谢谢

灵感链接在这里

命令:去构建 --compiler gccgo --gccgoflags "-v -static-libgo -Wl,-dy -lnsl -lsocket -lrt -lsendfile"

示例 1:

它工作得很好,但是,

示例 2

这就是我卡住的地方

谢谢你

0 投票
2 回答
1566 浏览

linux - cgo 从 amd64(linux) 交叉编译到 arm64(linux)

我正在尝试使用基于 arm64 的“amd64”为“arm64”架构构建一个 go 代码。当我使用共享库构建 go 代码时,出现下面提到的错误。有人可以帮助我吗?

Go 版本:go1.10.3 linux/amd64

gcc 版本:gcc 版本 7.3.0 (Ubuntu 7.3.0-21ubuntu1~16.04)

去环境:

错误:去构建 hello.go

去代码:

0 投票
1 回答
117 浏览

go - 如何使用 gccgo 构建超级账本结构

有没有办法使用 gccgo 构建超级账本结构?我想这样做是为了使用 gcc 的 -finstrument-functions 选项来跟踪函数调用。但是我遇到了两个问题。我的步骤如下。

  1. 找到构建命令

make -n 释放

echo "为 linux-amd64 构建版本/linux-amd64/bin/configtxgen"

mkdir -p 发布/linux-amd64/bin CGO_CFLAGS=""

GOOS=linux GOARCH=amd64 go build -o /home/yiifburj/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen -tags "nopkcs11" -ldflags "-X github.com/ hyperledger/fabric/common/tools/configtxgen/metadata.Version=1.1.0" github.com/hyperledger/fabric/common/tools/configtxgen

  1. 修改构建命令以使用 gccgo

CGO_CFLAGS="" GOOS=linux GOARCH=amd64 go build -compiler gccgo -o /home/yiifburj/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen -tags "nopkcs11" -gccgoflags “-X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.Version=1.1.0” github.com/hyperledger/fabric/common/tools/configtxgen

#github.com/hyperledger/fabric/bccsp/factory

bccsp/factory/pluginfactory.go:12:8:错误:找不到导入文件“插件”
“插件”

bccsp/factory/pluginfactory.go:56:15:错误:对未定义名称的引用

'plugin' 插件,错误:= plugin.Open(config.PluginOpts.Library)

首先,如上,go build调用gccgo时找不到“plugin”。另一个是使用 gccgo 时如何传递 ldflags -X?似乎 -X 是仅在 gc 工具而不是 gccgo 中无效的参数。

任何人都可以帮助我吗?谢谢。

0 投票
1 回答
66 浏览

c - 通过 Cgo 访问 aerospike C 客户端时出错

我正在尝试学习 Cgo,所以我尝试从 Cgo 访问 aerospike 客户端

但我得到以下错误。(请注意,当我 make 和 make run 时 C 程序运行成功)。

所以我认为问题出在 Makefile 中的配置上。我已经搜索了一整天并尝试了许多解决方案但无济于事。你能帮我如何在 Cgo 中导入 Makefile 吗?或帮助我成功执行此操作的替代方法..

0 投票
0 回答
105 浏览

go - 如何在 GCCGO 中导入值以执行 go linker ldflags -X 在 GC 编译器中执行的操作

现在,我有了 bash 代码,它可以在编译时使用 go 工具中的链接器将版本值导入 go 源代码。这段代码可以用 GC 正常运行。

go build -ldflags "-X something:something" main.go

但是我在机器上测试我的代码,它的架构只支持 gccgo 而不是 gc,而 gccgo 不支持 -ldflags,它是 gc 中的链接器工具。虽然 gccgo 有标志选项,即 -gccgoflags,但我没有看到我需要的链接标志。

我想知道 gccgo 中是否有任何相关标志,或者有没有其他方法可以将值插入源代码?

我不想用 bash 硬编码这个特性。

谢谢。

0 投票
2 回答
829 浏览

linux - 如何减少 gccgo 编译的可执行文件所需的虚拟内存?

当我使用 gccgo 编译这个简单的 hello world 示例时,生成的可执行文件使用了超过 800 MiB 的 VmData。我想知道为什么,如果我能做些什么来降低它。睡眠只是为了给我时间观察内存使用情况。

来源:

我用来编译的脚本:

gccgo的版本:

/proc/<pid>/status 的输出:

我问是因为我的设备只有 512 MiB 的 RAM。我知道这是虚拟内存,但我想尽可能减少或删除过度使用。对我来说,一个简单的可执行文件需要这么多分配似乎是不合理的。

0 投票
0 回答
166 浏览

go - 为什么gccgo会报这么奇怪的错误信息?

它只是一个简单的“Hello World”程序,源代码:

我编译它,用

去版本 go1.10.3 gccgo (GCC) 8.3.0 linux/amd64

它报告了以下错误消息:

命令go env打印

0 投票
1 回答
180 浏览

go - 如何为 ARM 架构构建 SO 库

我需要在 Go 中构建一个共享库。为此,我使用CGO并构建SO了带有选项的 lib

go build -o libUtil.so -buildmode=c-shared main.go

现在,我需要做同样的事情,但对于ARM架构。当我不使用CGO时,我只使用,export GOARCH=arm 这足以成功。但是,当我使用时CGO,我无法构建SO库。

我怀疑我需要安装arm 构建工具,但我不知道该怎么做以及如何配置我的 GO 环境以使用这些工具。我希望,有人可以帮助我。

操作系统是Linux。

0 投票
0 回答
166 浏览

go - crosstool-ng gccgo 构建错误,带有未定义的 morestack 符号

我正在使用 crosstool-ng 1.24.0 构建 gccgo。编译非常简单的 main.go 时出现链接器错误。知道如何解决这个问题吗?任何指向成功构建 gogcc 的指针,即使对于可以轻松验证的不同流行目标也是如此?

主机是 ubuntu 18.04 和 gcc 7.3.0。crosstool-ng 目标是 x86_64-ubuntu16.04-linux-gnu,它应该使用 glibc 2.23 创建 gcc 8.3.0。

以下是缺少的符号:


构建步骤的更多细节:

[1] 查看 crosstool-ng。它的主人现在在 1.24.0 上。

[2] 运行这些命令来构建一个普通的 c 和 c++ 工具链:

[3] 通过编译一个 hello-world 程序并运行来验证 gcc 是否工作。

[4] 编辑脚本以启用 go。补丁看起来像:

[5]./ct-ng build再次运行。

[6] 编译一个非常简单的main.go:

使用命令:

得到这些错误:

0 投票
0 回答
77 浏览

go - 在太阳能上使用 gcc 9.1.0 的未定义 C 类型“int”

我从源代码 (GNU) 在 Solaris 11 (SPARC) 上构建了 gcc 9.1.0。构建进展顺利,CGO 免费的 Go 代码可以编译并运行。

使用 CGO 代码 gccgo 构建不会编译。引用任何 C 标准类型(如 C.int)的 g​​o 代码返回错误:

这是未构建的简单示例代码。

在其他平台上,正确引用了 C 类型。在 gcc 编译期间我是否错过了编译器标志?

configure使用以下命令调用 gcc:

有没有人提示如何在 Solaris SPARC 上正确构建 gccgo?是否缺少 Solaris 上需要的头包含文件依赖项?