gccgo on Precise
尝试确切地与GCCGO链接时,我会得到此链接错误: matt@matt-1005P:~/src/gopath/src/meme$ gccgo cmd/meme/main.go -o meme /usr/bin/ld: cannot find -lgcc_s collect2: error: ld returned 1 exit status 有此错误的报告,但没有干净的解决方案.我该如何修复? gccgo(ubuntu/linaro 4.7.0-0ubuntu4)4.7.0 Linux Matt-1005p 3.2.0-24-Generic-Pae#38-ubuntu SMP Tue 5月1日16:40:26 UTC 2012 I686 I686 I686 I386 GNU/Linux 解决方案 最近在Golang-Nuts组中提出了这一点:用包装二进制文件与GCCGO编译. 这是ubuntu(go build -compiler gccgo -gcc
10 2023-11-02
编程技术问答社区
如何导入和使用.so文件
请给我示例(代码)如何导入main. 解决方案 GO尚未支持动态代码加载(即插件).将来有计划增加支持,但此时没有设定的时间表: 其他解决方案 您无法动态加载" DLL".
14 2023-04-26
编程技术问答社区
在围棋应用中使用C(++)以提高性能
我几天前开始学习Go,并通过其CGO Thing和GCCGO编译器来.从我的理解中,这允许GO程序使用GO编译器编译并使用C编译器编译C库,并从GO内部参考这些库.这对我来说真的很有趣,因为这使我们能够利用Little Heved Hepthad的主要程序中的C的性能(如果需要). . 但是,我不确定这一点,所以我在这里问: 是否会在您的GO应用程序内部创建C库来创建C库?还是此功能仅是为了促进现有C代码的可重复使用? P.S:我认为目前CGO不支持C ++,但是这里有一个能够使用C函数包装C ++代码并成功称呼它们的帖子. 解决方案 CGO相当慢,因为Go必须弄乱其运行时并调用约定以某些方式调用C函数.唯一值得的地方是,计算时间显着相形见 this Fork .它类似于平行,分布式,GPU等,尽管启动成本略低. 组件要好得多,因为您可以编写使用GO呼叫约定的汇编,否则可以像本机GO代码一样对待,但是汇编的便携程度要少得多,更难读取,并且维护更大.实际上
16 2023-04-26
编程技术问答社区
使用Go 1.5 buildmode=c-archive与net/http.Server从C语言链接。
即将发行的GO 1.5发行版带有 gohttplib.go: package main import "C" import "net/http" //export ListenAndServe func ListenAndServe(caddr *C.char) { addr := C.GoString(caddr) http.ListenAndServe(addr, nil) } func main() {} 示例/c/main.c: #include #include "../../gohttplib.h" int main() { ListenAndServe(":8000"); return 0; } 产生静态链接的对象,并且标头正常工作: $ go build -buildmode=c-archive 但对其进行编译是失败的: $ gcc -o gohttp-c examples/c
58 2023-03-05
编程技术问答社区
在现有的C项目中使用Go
我有一个完全在C中编写的程序,该程序在其中使用了多个对象(.o)文件.这些文件全部都包装在存档文件(.a)中,该文件依次在程序的主(.c)文件的编译时使用. 我想在GO中为此项目编写一个新文件.我的想法是编写此.go文件,然后从中创建一个对象(.o)文件.之后,我想将此对象文件放在已经提到的存档(.a)文件中. 这基本上意味着我想从C程序中调用GO函数.我已经阅读了这个问题,虽然它向我展示了我想要的可能是可能的通过GCCGO,如何做到这一点并不清楚. 即使有最基本的测试,我也会在链接阶段遇到错误.更具体地说,这是这样的基本示例之一: printstring.go package main import ( "fmt" ) func PrintString(buff string) int { fmt.Printf(buff) return 1 } c_caller.c #define _GNU_SOURCE #inclu
38 2023-02-03
编程技术问答社区
从C语言调用Go中的整数除法
我能够通过此程序执行整数部门: package main import "fmt" func main() { a := 10 b := 5 fmt.Println(a/b) } 然后,我在GO中制作了一个程序,该程序具有 +, - , *和/的功能. 我在C中制定了一个调用这些功能并执行算术操作的程序. 除部外,代码正常. 带有功能的GO文件是:( calc.go) package main func Add(a, b int) int { return a + b } func Sub(a, b int) int { return a - b } func Mul(a, b int) int { return a * b } func Div(a, b int) int { return a / b } 和调用这些功能的C程序是:(calcc.c) #include extern
22 2022-10-15
编程技术问答社区
'gc'和'gccgo'之间的主要区别是什么?
两个受欢迎的GO编译器" GC"和" GCCGO"之间的主要区别是什么?建立性能?运行时性能?命令行选项?许可? 我不是在寻找最好的意见,只是他们差异的基本概述,因此我可以决定哪种最适合我的需求. 解决方案 您可以在" 设置并使用GCCGO "中看到更多信息p> GCCGO,GO语言的编译器. GCCGO编译器是GCC的新前端. 请注意,GCCGO不是GC编译器 如" gcc 4.7.1 "(2012年7月) GO语言始终由规格定义,而不是实现. GO团队编写了两个不同的编译器,这些编译器实现了该规格:GC和GCCGO. . GC是原始编译器,GO工具默认使用它. GCCGO是一个不同的实现,重点不同 与GC相比,GCCGO的编译代码较慢,但支持更强大的优化,因此GCCGO构建的CPU结合程序通常会更快地运行. 也: GC编译器仅支持最受欢迎的处理器:X86(32位和64位)和ARM. 但是, GCCGO支持GCC支持的所有处理
24 2022-10-14
编程技术问答社区
在GoLang应用程序中使用C(++)以提高性能
几天前我开始学习 Go,并通过它的 CGO 和 gccgo 编译器来学习.据我了解,这允许 Go 程序使用 Go 编译器进行编译,并使用 C 编译器编译 C 库,并从 Go 程序内部引用这些库.这对我来说真的很有趣,因为这使我们能够以很少的开销从主程序中利用 C 的性能(如果需要). 但是我不确定那是多少,所以我在这里问: 在某些情况下,您会创建一个 C 库只是为了在您的 Go 应用程序中使用它?还是这个特性只是为了促进现有 C 代码的可重用性? P.S:我认为目前 CGO 不支持 C++,但这里有一个帖子,有人能够使用 C 函数包装 C++ 代码并成功调用它们. 解决方案 Cgo 相当慢,因为 Go 必须 在调用 C 函数的某些方式中弄乱了它的运行时和调用约定.唯一真正值得的地方是计算时间大大超过这个成本的情况.类似于并行、分布式、GPU等编程,只是启动成本略低. Assembly 要好得多,因为您可以编写使用 Go 调用约定的程序集,并且在其他方​​面
3292 2022-07-17
编程技术问答社区