РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1588 of 1593 menu

Директива #cgo LDFLAGS

Директива #cgo LDFLAGS используется в файлах Go для передачи дополнительных параметров линковщику при компиляции C-кода через cgo. Она позволяет подключать внешние C-библиотеки, указывать пути к ним и задавать другие опции компоновщика. В качестве значения передается строка с флагами, которая будет добавлена к команде линковки.

Синтаксис

// #cgo LDFLAGS: -lm -lz -L/path/to/libs import "C"

Пример

Давайте подключим математическую библиотеку libm и вызовем функцию pow из C:

package main /* #include <math.h> #cgo LDFLAGS: -lm */ import "C" import "fmt" func main() { x := C.double(2.0) y := C.double(3.0) res := C.pow(x, y) fmt.Printf("%.0f\n", float64(res)) }

Результат выполнения кода:

"8"

Пример

Подключим библиотеку сжатия zlib с указанием пути для поиска библиотек:

package main /* #include <zlib.h> #cgo LDFLAGS: -lz -L/usr/local/lib */ import "C" import "fmt" func main() { version := C.zlibVersion() fmt.Printf("zlib version: %s\n", C.GoString(version)) }

Результат выполнения кода:

"zlib version: 1.2.11"

Пример

Использование нескольких флагов в одной директиве для статической линковки библиотеки:

package main /* #cgo LDFLAGS: -static -lssl -lcrypto -L/usr/lib/x86_64-linux-gnu #include <openssl/ssl.h> */ import "C" import "fmt" func main() { version := C.SSLeay_version(C.SSLEAY_VERSION) fmt.Printf("OpenSSL version: %s\n", C.GoString(version)) }

Результат выполнения кода:

"OpenSSL version: OpenSSL 1.1.1w 11 Sep 2023"

Смотрите также

  • директиву #cgo CFLAGS,
    которая задает флаги для компилятора C
  • директиву #cgo pkg-config,
    которая использует pkg-config для получения флагов
  • функцию C.CString,
    которая преобразует строку Go в C-строку
  • функцию C.GoString,
    которая преобразует C-строку в строку Go
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить