2016-06-15 16 views
1

Cgoを使用してCライブラリ(GEOS、FWIW)とバインドするGo 1.5アプリケーションがあります。私がしなければならないことは、最終的に私たちの継続的な統合システムを通じて展開できるように、ベンダーです。問題は、いったんそれが一旦取り出されると、リンカーがライブラリとリンクするように納得させる方法を知らないということです。 godepを実行した後、cgo指示文を含むファイルは.../vendor/.../geos.goです。私は、そこにlibディレクトリを作成しGEOSから5つの.soファイルに追加し、次へプリアンブルを変更:ポイントにCgoバインディングを使用してGoライブラリをどのようにベンダーに提供しますか?

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

これだけの作品 - 私はgo buildを実行したとき、それは最初のライブラリを見つけなく、連続するライブラリのいずれか。

は/ usr/binに/ LD:警告:libgeos-3.4.2.so、ベンダーが必要/ github.com/paulsmith/gogeos/GEOS/libに/ libgeos_c.so、(-rpathを使ってみては見られませんまたは-rpath-link)

どうすれば正しくリンクされますか?

答えて

-1

私は、次のようなフィードバックをオフラインになった:スタックオーバーフローで述べたバインディングCGOのような

低レベルCの依存性は、スーパートリッキーで、あなたが想像できるよう、ベンダーに困難です。このため、これまで私は単純にローカルまたはCIボックス上で自分のgoバイナリ(Linuxターゲット)をビルドし、バイナリbuildpackを使用してプッシュするか、または自分のアプリケーションバイナリでDockerイメージを構築して、 。

つまり、私が示唆していたことをしないでください。ちょうどそれを昔ながらの方法で構築してください。

関連する問題