2016-06-15 4 views
1

У меня есть приложение Go 1.5, которое связывается с библиотекой C (GEOS, FWIW) с помощью cgo. То, что мне нужно сделать, это вендор, чтобы он мог в конечном итоге быть развернут через нашу систему непрерывной интеграции. Проблема в том, что я не знаю, как убедить компоновщика связываться с библиотекой после ее продажи. После запуска godep файл с директивой cgo - .../vendor/.../geos.go. Я создал каталог Lib там, добавили в пять .so файлы из GEOS, и изменили преамбулу к следующим:Как вы продаете библиотеку Go с привязкой к Cgo?

/* 
#cgo LDFLAGS: -L${SRCDIR}/lib -lgeos_c 
#include "geos.h" 
*/ 
import "C" 

Эта функция работает только до точки - когда я бегу go build он находит первую библиотеку, но не любой из последовательных библиотек.

/USR/бен/л.д.: предупреждение: libgeos-3.4.2.so, необходимы поставщику/github.com/paulsmith/gogeos/GEOS/Библиотека/libgeos_c.so, не нашел (попробуйте использовать -rpath или -rpath-link)

Как я могу связать все правильно?

ответ

-1

я получил следующую обратную связь в автономном режиме:

зависимости низкого уровня C, как и ОЦП связывание упоминается в переполнение стека супер сложно, и трудно поставщика, как вы можете себе представить. Вот почему в прошлом я просто либо обошел требование о продаже, строя свой бинарный файл go (цель Linux) в локальном или CI-окне и нажав с помощью бинарного buildpack, либо я построил изображение Docker с его двоичным кодом приложения ,

Другими словами, не делайте то, что я предлагаю. Просто создайте его старомодным способом.