goアプリケーションから動的なCライブラリを使用したいが、アプリケーションをビルドすることができるが、実行時にライブラリが見つからない。ここ 私のプロジェクトの構造:私は成功したアプリケーションを構築することができます相対パスから動的にリンクされたライブラリを使用する方法
/*
#cgo CFLAGS: -I./lib
#cgo LDFLAGS: -L./lib -lmylib
#include <mylib.h>
*/
import "C"
func main() {
C.testMyLib()
}
が、起動すると、それは、このエラーがスローされます:私は.Hとの.soファイルをインポートmain.goで
src/ctest/
|- lib/
| |- libmylib.so
| |- libmylib.h
|- main.go
:
error while loading shared libraries: libmylib.so.0: cannot open shared object file: No such file or directory
私は/ usr/libにlibmylib.soファイルをコピーする場合、期待どおり、その後、すべてが動作します。しかし、私のアプリケーションは、環境変数を設定せずに、実行時にCURRENT_PATH/libにある必要なライブラリを自動的に検索したいと思います。どうすれば達成できますか?
'$が{SRCDIR}' [CGOのドキュメント](https://golang.org/cmd/cgo/)に – JimB
@JimBが、私はそれを試してみましたし、それが動作しませんを参照してください。 。実行時にまったく同じエラーがスローされます。 –