我想從go應用程序中使用動態C庫,我可以構建應用程序,但在運行時找不到該庫。 這裏我的項目的結構:如何使用相對路徑中的動態鏈接庫
在main.gosrc/ctest/
|- lib/
| |- libmylib.so
| |- libmylib.h
|- main.go
我導入h和.so文件:
/*
#cgo CFLAGS: -I./lib
#cgo LDFLAGS: -L./lib -lmylib
#include <mylib.h>
*/
import "C"
func main() {
C.testMyLib()
}
我可以成功地構建應用程序,但啓動時,它拋出這個錯誤:
error while loading shared libraries: libmylib.so.0: cannot open shared object file: No such file or directory
如果我將libmylib.so文件複製到/ usr/lib中,那麼一切都按預期工作;不過,我希望我的應用程序可以在運行時自動在CURRENT_PATH/lib中搜索所需的庫,而無需設置環境變量。我怎樣才能實現它?
見'$ {SRCDIR}'的[CGO文件]中(https://golang.org/cmd/cgo/) – JimB
@JimB我嘗試過了,這是行不通的。運行時引發的錯誤完全相同。 –