问题标签 [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.
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)
go - 字符串转字符 (*array)[]
编译器返回:
cgo-gcc-prolog:129:19:错误:数组大小为负
我写了一个 webhook 函数,但触发了 notifyWebhook 函数并发送了错误的参数。为什么?我在哪里犯错?
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,但错误仍然存在
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
go - gccgo-cross-compile 无法编译 cgo
我正在尝试使用 gccgo 编译一个简单的 go 程序。我的代码使用 cgo 你,gccgo 无法编译它。这是我的代码(使用 go 编译器编译):
当我使用我编译代码时gccgo main.go -o gccoutput
:
任何想法如何解决这个问题?
编辑: 我正在尝试使用 gccgo 编译到 ppc,并且我不想使用 go 编译器的交叉编译过程。我试图做(如评论中所建议):
它奏效了。你,当我这样做时:
我得到:
go - GCC-Go - 优化特定架构的构建
如何使用环境变量来优化 go 二进制文件?
例如,使用 C 和 GCC,您将设置CFLAGS="-O2 -march=znver1
为使用第 2 层优化进行构建,并针对 Zen 微架构进行特定优化。我在 Golang 的文档中找不到等效的环境变量。
Go 确实提供了一种禁用它们的方法,但不指定使用哪一个,以防您使用 gccgo 作为编译器后端。因此,它与一般关于 Go 优化标志的其他问题非常不同(例如,将优化标志传递给 Go 编译器?)
parsing - strconv.ParseFloat 在不应该时将值变为 0
我有以下代码:
输出如下:
这似乎是将字符串解析为float64
's 的正确方法,有什么我遗漏的吗?
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?
- 我是否使用了正确的编译器?
go - 获取 Go 可执行文件 (hugo) 以运行英特尔 Galileo/Quark
我正在尝试让 hugo 在我的 Intel Gallileo(Quark CPU)上运行的 Alpine 发行版上工作。
我已经克服了一些障碍。
此 CPU 没有 MMX,因此需要 gcc-go 将 hugo 编译成二进制文件(在虚拟机中)
但是在将 hugo 二进制文件复制到 galileo 之后,Hugo 不起作用。我收到以下错误:
这可能是:
- Quark 有 256MB 的内存,可执行文件是 127MB,也许内存不够?
- 夸克有一个众所周知的错误。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=738575%22这意味着它错误处理 LOCK 指令并导致段错误。
在普通的 C 工具链上,汇编器可以使用 "-Xassembler '-momit-lock-prefix=yes'" CFLAG 剥离 LOCK 操作(Galileo 是单核,因此不需要)
但是我不确定go build
工具链上的等价物是什么,也许这根本不可能?
编译后的二进制文件在虚拟机中完美运行。