Интерфейс Go с библиотеками C
Как связать программу Go с библиотекой C?
Я просматривал исходный код Go, но до сих пор не понял. Если кто-то уже сделал это, не могли бы вы поделиться, пожалуйста?
ОБНОВЛЕНО: Благодаря @fserb я публикую некоторую документацию из источников Go:
Cgo позволяет создавать пакеты Go, которые вызывают C-код.
Использование: cgo [опции компилятора] file.go
Параметры компилятора пропускаются через uninterpreted при вызове gcc для компиляции частей C пакета.
Входной файл file.go является синтаксически допустимым исходным файлом Go, который импортирует псевдопакет «C», а затем ссылается на типы, такие как C.size_t, переменные, такие как C.stdout, или функции, такие как C.putchar.
Если импорту «C» сразу предшествует комментарий, этот комментарий используется в качестве заголовка при компиляции C-частей пакета. Например:
// #include <stdio.h>
// #include <errno.h>
import "C"
Cgo преобразует входной файл в четыре выходных файла: два исходных файла Go, файл C для 6c (или 8c или 5c) и файл C для gcc.
Стандартные правила makefile пакета в Make.pkg автоматизируют процесс использования cgo. Смотрите примеры в $ GOROOT / misc / cgo / stdio и $ GOROOT / misc / cgo / gmp.
Cgo еще не работает с gccgo.