问题标签 [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 - “gc”和“gccgo”之间的主要区别是什么?
两种流行的 Go 编译器“gc”和“gccgo”之间的主要区别是什么?构建性能?运行时性能?命令行选项?许可?
我不是在寻找关于哪个最好的意见,只是对它们差异的基本概述,所以我可以决定哪个最适合我的需要。
go - 如何导入和使用.so文件
请给我示例(代码)如何将 gccgo 制成的 .so 文件导入 main.go?
linux - Golang 交叉编译:gccgo - 无法识别的命令行选项 `-marm`
我正在尝试为 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 - gccgo 4.9.2 动态链接器错误:未定义对“sync..import”的引用
源代码是
目标文件的构建没有错误
但链接器报告错误undefined reference to `sync..import'
。
我错过了什么?感谢帮助
我试过静态链接程序,添加一个标志-static-libgo
,它可以工作。
go - 从 C 调用的 Go 中的整数除法
我可以通过这个程序执行整数除法:
然后我在 go 中编写了一个程序,它具有 +、-、* 和 / 的功能。我用 C 语言编写了一个程序,它调用这些函数中的每一个并执行算术运算。除除法外,代码工作正常。
带有函数的 go 文件是:(calc.go)
调用这些函数的 C 程序是:(calcc.c)
我使用以下命令在终端上编译:
gccgo -c calc.go
- 和
gcc calc.o calcc.c -o 主
并得到了这个错误: undefined reference to `__go_runtime_error' collect2: error: ld returned 1 exit status
我应该如何解决这个问题?
c - 在现有的 C 项目上使用 Go
我有一个完全用 C 语言编写的程序,其中使用了多个目标(.o)
文件。这些文件都打包在一个存档文件(.a)
中,而该存档文件又在程序主(.c)
文件的编译时使用。
我想用 Go 为这个项目写一个新文件。我的想法是编写这个.go
文件,然后(.o)
从中创建一个目标文件。之后,我想把这个目标文件放在已经提到的存档(.a)
文件中。
这基本上意味着我想从 C 程序中调用 Go 函数。我读过这个问题,虽然它向我展示了我想要的东西可以通过 GCCGO 实现,但如何做到这一点并不是 100% 清楚。
即使是最基本的测试,我在链接阶段也会出错。更具体地说,这是这样一个基本示例之一:
打印字符串.go
c_caller.c
编译
为了编译 Go 文件,我使用了以下命令:
为了编译整个东西,我使用了这个命令:
我收到的返回消息是:
这意味着 GCCGO 期望 Go 文件中的 main 函数而不是 C 文件。
在第二个命令上使用--static-libgo
,-static
和-Wl,-R,/path/to/libgo.so's_folder
选项会产生不同的结果:
这没有任何意义,因为我有 LD_LIBRARY_PATH 环境变量正确指向 libgo.so 的文件夹。
我意识到我可能在这里做错了什么,但我就是看不到那是什么。几乎没有 GCCGO 及其与 C 交互的示例,我能找到的唯一参考是这个页面,我个人觉得这还不够。
我恳请您就此事提供一些建议,并感谢您抽出宝贵时间。:)
c - 使用 Go 1.5 buildmode=c-archive 和从 C 链接的 net/http.Server
即将发布的 Go 1.5 带有新的构建模式,允许导出 Go 符号以从 C 代码链接和调用。我一直在玩它,并得到了基本的“Hello world”示例,但现在我正在尝试链接一个启动 a 的 Go 库,net/http.Server
但它失败了。代码如下所示(也可在此处获得):
gohttplib.go:
示例/c/main.c:
生成静态链接的对象和标题工作正常:
但是针对它进行编译失败了:
这是在 OS X 10.9.5 上使用来自 Go github 存储库 (38e3427) 的最新版本。我知道 Go 1.5 尚未发布,并且无法保证它可以正常工作,但我这样做是出于教育目的,我怀疑我遗漏了一些东西。
相关版本:
go - 无法从 go 运行 C 调用
我正在尝试从 go 语言代码运行 C 调用。这是我正在运行的程序:
这是文件proxy.h的内容:
现在,这是我在尝试运行该程序时遇到的错误:
我正在使用 gccgo-5 并使用 1.4.2 版。你能帮我弄清楚这里到底是什么问题吗?TIA。
c - Gccgo错误在go中传递和修改C结构
我正在尝试将一个 go 库转换为由 C 调用,我从一个简单的测试开始(基于一个示例回答我发现有效的另一个问题)文件,但是当我尝试构建时出现错误。我在 C 中有一个结构,我试图将它传递给一个 go 函数,该函数使用该结构中的数据并返回一个值(在这种情况下是一个整数,但最终它将是另一个结构)。
去版本:1.4.2
gccgo 版本:5.0.1
gcc 版本:4.9.2
类型.h
foo.go
酒吧.c
生成文件
当我运行 make 我得到错误:
根据我从其他搜索中了解到的情况,这些错误与对 C go 库的调用有关,表明这可能没有被编译到目标文件中。我也尝试过直接在 make 文件中运行 gccgo 并得到相同的结果。任何见解和/或帮助表示赞赏。谢谢。
编辑
多亏了这篇文章,我才知道这一点。显然我需要在 Makefile 中为 main 调用 gccgo,因为 gcc 不知道如何正确链接 go 运行时。