问题标签 [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 回答
185 浏览

go - 由于导入错误,比赛检测器无法运行。端口运行时/竞赛:在任何 GOROOT 或 GOPATH 中都找不到包“运行时/竞赛”

我的操作系统是 ubuntu18.04。
我的编译器是 gccgo。
GOROOT 是 /usr/local/go
它报告为:
package testmain imports runtime/race:在以下任何一个中都找不到包“runtime/race”:
/usr/local/go/src/runtime/race(来自 $GOROOT)
/ home/lzx/tiny_distributed_system/src/runtime/race(来自 $GOPATH)

0 投票
1 回答
521 浏览

go - 字符串转字符 (*array)[]

编译器返回:

cgo-gcc-prolog:129:19:错误:数组大小为负

我写了一个 webhook 函数,但触发了 notifyWebhook 函数并发送了错误的参数。为什么?我在哪里犯错?

0 投票
1 回答
135 浏览

go - gccgo,AIX:编译的 .o 文件不包含 .go_export 部分

我正在尝试在 AIX 上构建 gccgo (9.2),但现在面临一个我无法解决的问题。

机器:AIX 7.1,处理器类型:PowerPC_POWER7,CPU 类型:64 位,内核类型:64 位

错误:“./sync/atomic.gox 存在但不包含任何 Go 导出数据”。

所以我查看了 atomic.gox ,它是空的。(所有 .gox 文件都是空的)。所以接下来我看看 atomic.gox 是如何创建的。该文件由objcopy -j .go_export sync/.libs/atomic.o. 所以 atomic.o 的 .go_export 部分用于创建 atomic.gox。我发现, atomic.oobjdump -s atomic.o没有任何 .go_export 部分,只有“.text、.data 和 .debug”。因此,错误行为位于 .o 文件的创建处。为了创建 atomic.o 文件,我找到了以下行:

libtool:编译:/OS/COMPSRV/trunk/user1/src/gccgo-obj/./gcc/gccgo -B/OS/COMPSRV/trunk/user1/src/gccgo-obj/./gcc/-B/opt/免费软件/gcc9/powerpc-ibm-aix7.1.5.0/bin/ -B/opt/freeware/gcc9/powerpc-ibm-aix7.1.5.0/lib/ -isystem /opt/freeware/gcc9/powerpc-ibm- aix7.1.5.0/include -isystem /opt/freeware/gcc9/powerpc-ibm-aix7.1.5.0/sys-include -O2 -g -I 。-c -fgo-pkgpath=sync/atomic ../.././../gccgo-src/libgo/go/sync/atomic/doc.go ../.././../gccgo-src /libgo/go/sync/atomic/value.go -fPIC -o sync/.libs/atomic.o

这些是我的配置参数:

语言="--enable-languages=go,c,c++"

options="CC=/opt/freeware/bin/gcc --without-gnu-ar --without-gnu-as --with-gnu-ld --with-gmp-include=/usr/include/gmp -- disable-bootstrap --with-gmp-lib=/usr/lib --with-mpfr-include=/usr/include/mpfr --with-mpfr-lib=/usr/lib --with-mpfr=/usr/包括 --with-mpc=/usr/include --disable-nls --disable-libquadmath --disable-libssp --disable-lto --disable-libgomp"

multilib="--启用-multilib"

shared="--启用共享"

静态=“--启用静态”

更多信息:我正在使用 gcc 8.3

编辑:

建议的解决方案:

  • 我添加了--enable-libgo,但错误仍然存​​在
0 投票
1 回答
1092 浏览

windows - 无法在 Windows 10 上安装 gccgo

我想安装 gccgo,但我在 Windows 上。我阅读了golang 页面上的设置和使用 gccgo页面。该页面说

安装 gccgo 最简单的方法是安装包含 Go 支持的 GCC 二进制版本。GCC 二进制版本可从各种网站获得,通常包含在 GNU/Linux 发行版中。我们预计大多数构建这些二进制文件的人都将支持 Go。

当我转到那个页面时,我看到 windows 有两种安装方法。我以前使用过 mingw,所以我gcc testfile.go在我的 powershell 终端中尝试过,但它说:

然后我尝试安装另一个编译器:Cygwin。我遵循了本教程,但它也产生了完全相同的结果。

有谁知道如何在 Windows (10) 上安装 gccgo?

我也尝试过从源代码安装,但没有生成文件。(我导航到 GCC/gcc/go 并找不到 makefile,而是找到了 Make-lang.in)

编辑:我也进入了 GCC/libgo,但我也找不到生成文件。相反,我找到了 Makefile.in 和 Makefile.am。我发现这篇关于 Makefile.in 和 Makefile.am 的帖子。我跑了configure,但它说

编辑 2:我尝试在 MinGW 终端中执行此操作(转到 C:/GCC/libgo 运行 configure,然后 make),但出现以下错误

另外,在查看 sysinfo.c 的源代码时,我发现很多#includes以 开头<linux/somedir>,但是(正如我之前所说)我使用的是 windows

0 投票
0 回答
301 浏览

go - gccgo-cross-compile 无法编译 cgo

我正在尝试使用 gccgo 编译一个简单的 go 程序。我的代码使用 cgo 你,gccgo 无法编译它。这是我的代码(使用 go 编译器编译):

当我使用我编译代码时gccgo main.go -o gccoutput

任何想法如何解决这个问题?

编辑: 我正在尝试使用 gccgo 编译到 ppc,并且我不想使用 go 编译器的交叉编译过程。我试图做(如评论中所建议):

它奏效了。你,当我这样做时:

我得到:

0 投票
1 回答
656 浏览

go - GCC-Go - 优化特定架构的构建

如何使用环境变量来优化 go 二进制文件?

例如,使用 C 和 GCC,您将设置CFLAGS="-O2 -march=znver1为使用第 2 层优化进行构建,并针对 Zen 微架构进行特定优化。我在 Golang 的文档中找不到等效的环境变量。

Go 确实提供了一种禁用它们的方法,但不指定使用哪一个,以防您使用 gccgo 作为编译器后端。因此,它与一般关于 Go 优化标志的其他问题非常不同(例如,将优化标志传递给 Go 编译器?

0 投票
1 回答
253 浏览

parsing - strconv.ParseFloat 在不应该时将值变为 0

我有以下代码:

输出如下:

这似乎是将字符串解析为float64's 的正确方法,有什么我遗漏的吗?

0 投票
1 回答
53 浏览

go - 如何达到峰值翻牌

我是一位经验丰富的 C++ 程序员,习惯于低级优化,我正试图从 Go 中获得性能。

到目前为止,我对 GFlop/s 很感兴趣。

我写了以下代码:

这是我的 c++ 基准测试的翻译尝试,它产生了 80% 的峰值失败率。

C++ 版本产生 95 GFlop/s,而 go 版本产生 6 GFlops/s(FMA 计数器为 1)。

这是 go 程序集的一部分(gccgo -O3 -mfma -mavx2):

我从我的 c++ 代码(g++ -fopenmp -mfma -mavx2 -O3)中得到了什么:

因此,我有几个问题,其中最重要的是:

  • 我是否以正确的方式表达并行性?

如果没有,我该怎么做?

为了进一步提高性能,我需要知道以下项目有什么问题:

  • 为什么我在程序集中只看到 vfmadd132sd 指令,而不是 vfmadd132pd?
  • 如何正确对齐内存分配?
  • 如何从生成的可执行文件中删除调试信息?
  • 我是否将正确的选项传递给 gccgo?
  • 我是否使用了正确的编译器?
0 投票
0 回答
41 浏览

go - 获取 Go 可执行文件 (hugo) 以运行英特尔 Galileo/Quark

我正在尝试让 hugo 在我的 Intel Gallileo(Quark CPU)上运行的 Alpine 发行版上工作。

我已经克服了一些障碍。

此 CPU 没有 MMX,因此需要 gcc-go 将 hugo 编译成二进制文件(在虚拟机中)

但是在将 hugo 二进制文件复制到 galileo 之后,Hugo 不起作用。我收到以下错误:

这可能是:

  1. Quark 有 256MB 的内存,可执行文件是 127MB,也许内存不够?
  2. 夸克有一个众所周知的错误。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=738575%22这意味着它错误处理 LOCK 指令并导致段错误。

在普通的 C 工具链上,汇编器可以使用 "-Xassembler '-momit-lock-prefix=yes'" CFLAG 剥离 LOCK 操作(Galileo 是单核,因此不需要)

但是我不确定go build工具链上的等价物是什么,也许这根本不可能?

编译后的二进制文件在虚拟机中完美运行。