![image][1]
С версии 1.5 компилятор Go поддерживает несколько режимов сборки, определяемых флагом `buildmode`. Их ещё называют режимами исполнения Go (_[Go Execution Modes][2]_). С их помощью `go tool` может компилировать пакеты Go в нескольких форматах, включая архивы и библиотеки общего пользования Go (shared libraries), архивы и библиотеки общего пользования Си, а с версии 1.8 — и динамические плагины Go.
В статье мы рассмотрим компилирование пакетов Go в библиотеки Си. В этом режиме сборки компилятор генерирует стандартный бинарный файл объекта (shared object) (.so), передавая функции Go в качестве API в стиле Си. Мы поговорим о том, как создавать библиотеки Go, которые можно вызывать из C, Python, Ruby, Node и Java.
Весь код доступен на [GitHub][3].
[Читать дальше →][4]
[1]:
https://habrastorage.org/files/0f0/8fd/c54/0f08fdc54eeb4a0daf06f709a8d028ae.jpg
[2]:
https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit
[3]:
https://github.com/vladimirvivien/go-cshared-examples
[4]:
https://habrahabr.ru/post/324250/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut