@nurzhannogerbek

Как сбилдить golang проект, который использует CGO?

Здравствуйте! Помогите пожалуйста разобраться.

На Windows 10 написал Golang приложение. В данном приложении используются несколько сторонних библиотек. Одна из них goracle для подключения к базе данных Oracle. Локально проект работает.

На своей локальной машине (windows 10) я пытаюсь создать бинарник с помощью следующей команды:
$Env:GOOS = "linux"; $Env:GOARCH = "amd64"; go build


К сожалению вижу следующую ошибку:
# gopkg.in/goracle.v2
../gopkg.in/goracle.v2/orahlp.go:60:2: undefined: describeOnly
../gopkg.in/goracle.v2/orahlp.go:223:26: undefined: PlSQLArrays
../gopkg.in/goracle.v2/orahlp.go:246:32: undefined: VersionInfo
../gopkg.in/goracle.v2/orahlp.go:249:10: undefined: VersionInfo
../gopkg.in/goracle.v2/orahlp.go:255:32: undefined: VersionInfo
../gopkg.in/goracle.v2/orahlp.go:272:19: undefined: VersionInfo
../gopkg.in/goracle.v2/orahlp.go:273:31: undefined: ObjectType
../gopkg.in/goracle.v2/orahlp.go:274:31: undefined: Event
../gopkg.in/goracle.v2/orahlp.go:274:41: undefined: Subscription
../gopkg.in/goracle.v2/orahlp.go:284:27: undefined: conn
../gopkg.in/goracle.v2/orahlp.go:249:10: too many errors


Данный бинарник собираюсь использовать на production сервере (CentOS), чтобы в дальнейшем завернуть его в Docker.

Нашел пост со схожей проблемой. В одном из комментариев говорится что нужен некий CGO и его можно сбилдить непосредственно в Docker-e. У меня возник вопрос, как это сделать?
  • Вопрос задан
  • 600 просмотров
Пригласить эксперта
Ответы на вопрос 2
Проще всего вам будет собирать это все дело непосредственно на CentOS.
CGO собирать не надо, он и так работает из коробки. Просто у вас на виндовой машине нет линуксовых бинарных библиотек, которые нужны для сборки. Поэтому собирайте под CentOS с установленными оракловыми библиотеками.
Ответ написан
@ghostiam
На Go писатель, серверов пинатель.
Если есть докер, стоит попробовать проект xgo ( https://github.com/karalabe/xgo )

Сам использую чтоб компилировать проекты с cgo на macos для linux x64/arm
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы