====== Golang DLL/SO ======
Создание DLL/SO с помощью Golang.
Создание динамической библиотеки на Go включает несколько шагов. Вот пример, как это можно сделать:
===== 1. Написание кода библиотеки: =====
Создайте файл с кодом, который вы хотите включить в библиотеку. Например, создадим файл mylib.go
:
import “C” import “fmt”
//export Hello func Hello() { fmt.Println(“Hello from Go!”) }
func main() {}
В этом примере функция Hello
будет экспортирована и доступна для вызова из других языков.
===== 2. Компиляция в динамическую библиотеку:=====
Используйте команду go build
для компиляции кода в динамическую библиотеку. Для этого выполните следующую команду в терминале:
Эта команда создаст файл mylib.so
, который является динамической библиотекой.
===== 3. Использование библиотеки: =====
Теперь вы можете использовать эту библиотеку в других языках программирования, таких как C. Вот пример использования библиотеки в C:
int main() { Hello(); return 0; }
Скомпилируйте и запустите этот код, чтобы увидеть результат:
Вы должны увидеть вывод Hello from Go!
.
Эти шаги помогут вам создать и использовать динамическую библиотеку на Go.
===== 4. Создание Go-кода для использования библиотеки: =====
Теперь создадим Go-код, который будет использовать эту библиотеку. Создайте файл main.go
:
/* #cgo LDFLAGS: -L. -lmylib #include “mylib.h” */ import “C”
func main() { C.Hello() }
В этом примере:
- Директива
#cgo LDFLAGS: -L. -lmylib
указывает компилятору Go, где искать библиотеку (-L.
указывает текущую директорию) и имя библиотеки (-lmylib
указывает наlibmylib.so
). #include "mylib.h"
включает заголовочный файл библиотеки.
===== 5. Создание заголовочного файла: =====
Создайте заголовочный файл mylib.h
для вашей библиотеки:
===== 6. Компиляция и запуск Go-кода: =====
Убедитесь, что файл libmylib.so
находится в той же директории, что и ваш Go-код. Затем скомпилируйте и запустите Go-код:
Вы должны увидеть вывод Hello from C library!
.
Эти шаги помогут вам подключить и использовать разделяемую библиотеку в программе на Go. Убедитесь, что все необходимые файлы (библиотека и заголовочный файл) находятся в правильных местах и доступны для компилятора.