英文:
How to get from cgo to exe
问题
从一个基本的测试程序开始...
package main
/*
#include <stdio.h>
static void test() {
printf("hello world");
}
*/
import "C"
func main() {
C.test();
}
我执行 "cgo hello_cgo.go" 并得到以下结果:
_cgo_.o
_cgo_defun.c
_cgo_gotypes.go
hello_cgo.cgo1.go
hello_cgo.cgo2.c
从这里开始如何编译成可执行文件?
英文:
From a basic test program. . .
package main
/*
#include <stdio.h>
static void test() {
printf("hello world");
}
*/
import "C"
func main() {
C.test();
}
I do "cgo hello_cgo.go" and get:
_cgo_.o
_cgo_defun.c
_cgo_gotypes.go
hello_cgo.cgo1.go
hello_cgo.cgo2.c
How do I go about compiling from here to an exe?
答案1
得分: 6
尝试使用Go的makefile。创建一个类似的makefile:
# Makefile
CGOFILES=test.go
TARG=test
include $(GOROOT)/src/Make.$(GOARCH)
include $(GOROOT)/src/Make.pkg
运行make命令将会生成文件_obj/test.a
,然后你需要使用6l
或类似的工具进行链接。
英文:
Try using the go makefiles. Create a makefile like
# Makefile
CGOFILES=test.go
TARG=test
include $(GOROOT)/src/Make.$(GOARCH)
include $(GOROOT)/src/Make.pkg
Running make will then produce the file _obj/test.a
, which you'll have to link with 6l
or similar.
答案2
得分: 2
更新go1版本:
$ cat foo.go
package main
// #include <stdio.h>
// static void test() { printf("Hello, world\n"); }
import "C"
func main() {
C.test()
}
$ go build foo.go
$ ./foo
你好,世界
英文:
Update for go1:
$ cat foo.go
package main
// #include <stdio.h>
// static void test() { printf("Hello, world\n"); }
import "C"
func main() {
C.test()
}
$ go build foo.go
$ ./foo
Hello, world
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论