0

При попытке использовать си библиотеку в golang получаю ошибку

/snap/go/10390/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: /tmp/go-link-3586512975/000001.o: в функции 
«_cgo_b7334996796a_Cfunc_Register_Card»:
/tmp/go-build/cgo-gcc-prolog:55: неопределённая ссылка на «Register_Card»
collect2: error: ld returned 1 exit status

Вот пример кода на go:

package main

//#cgo CFLAGS: -Wall -O2 -m64 -I/usr/local/adlink/pcis-dask/include64 //#include "dask.h" import "C" import ( "fmt" )

func main() { var card C.I16 = 1 var cardNumber C.U16 = 0

card = C.Register_Card(C.PCI_7432, cardNumber)
fmt.Printf("open device file successfully!! %v \n", card)

}

Компилирую go build main.go

PS код на си с той же библиотекой и теми же параметрами запускается, всё ок.

Информации в сети по конкретно этой библиотеке нет, это софт для довольно редкой промышленной платки. И опыта работы с CGO тоже мало, поэтому прошу помощи сообщества

1 Answers1

0

Разобрался, необходимо добавить ссылки на директорию библиотеки и ссылку -l

//#cgo LDFLAGS: -L/usr/local/adlink/lib64 -lpci_dask64

Всё скомпилировалось, надеюсь кому то пригодится.