Как включить библиотеку C (libxml2) при создании проекта Go для Linux? - PullRequest
1 голос
/ 21 октября 2019

У меня есть проект Go, который я хочу построить как двоичный файл, чтобы я мог развернуть его как AWS Lambda. Он использует оболочку Go для libxml2 (lestrrat-go), которая требует локальной установки libxml2, что я и сделал через brew install libxml2. Оболочка установлена ​​как подмодуль git в проекте.

Я могу нормально запустить модульные тесты с помощью следующего скрипта bash:

export LDFLAGS="-L/usr/local/opt/libxml2/lib"
export CPPFLAGS="-I/usr/local/opt/libxml2/include"
export PKG_CONFIG_PATH="/usr/local/opt/libxml2/lib/pkgconfig"

go test ./...

Однако я не могу понять, как построить свой проект какдвоичный файл, чтобы его можно было развернуть.

Я работаю на Mac и установил кросс-компилятор musl-cross , чтобы попытаться скомпилировать проект для linux, операционной системы, используемой наAWS Lambda.

Мой текущий сценарий сборки выглядит следующим образом:

export LDFLAGS="-L/usr/local/opt/libxml2/lib"
export CPPFLAGS="-I/usr/local/opt/libxml2/include"
export PKG_CONFIG_PATH="/usr/local/opt/libxml2/lib/pkgconfig"
export CGO_ENABLED=1
export CC=x86_64-linux-musl-gcc

GOOS=linux GOARCH=amd64 go build -ldflags="-w -L /usr/local/opt/libxml2/lib" -o bin/main

Команда завершается ошибкой со следующим выводом:

/var/folders/_j/dtvtwt3902x_z20282yqmwy00000gp/T/go-build660707780/b125/_x002.o: In function `MY_setXmlIndentTreeOutput':
vendor/github.com/lestrrat-go/libxml2/clib/clib.go:73: undefined reference to `__xmlIndentTreeOutput'
vendor/github.com/lestrrat-go/libxml2/clib/clib.go:74: undefined reference to `__xmlIndentTreeOutput'
/var/folders/_j/dtvtwt3902x_z20282yqmwy00000gp/T/go-build660707780/b125/_x002.o: In function `MY_test_node_name':
vendor/github.com/lestrrat-go/libxml2/clib/clib.go:163: undefined reference to `xmlIsCombiningGroup'
vendor/github.com/lestrrat-go/libxml2/clib/clib.go:163: undefined reference to `xmlCharInRange'
vendor/github.com/lestrrat-go/libxml2/clib/clib.go:163: undefined reference to `xmlIsExtenderGroup'
...  many more of these
...