Как добраться от cgo до exe - PullRequest
3 голосов
/ 07 мая 2010

Из базовой тестовой программы. , .

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

Как мне скомпилировать отсюда в exe?

Ответы [ 2 ]

6 голосов
/ 07 мая 2010

Попробуйте использовать make-файлы go. Создайте make-файл как

# Makefile
CGOFILES=test.go
TARG=test

include $(GOROOT)/src/Make.$(GOARCH)
include $(GOROOT)/src/Make.pkg

Запустив make, вы получите файл _obj/test.a, с которым вам нужно будет связать 6l или аналогичный.

2 голосов
/ 28 марта 2013

Обновление для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...