Go语言 在macOS中更改dylib搜索目录

kpbwa7wx  于 2023-02-06  发布在  Go
关注(0)|答案(2)|浏览(201)

我正在试用godal库,并编写了如下简单脚本:

package main

import (
    "github.com/airbusgeo/godal"
)

func main() {
    godal.RegisterAll()
}

运行go run main.go会引发以下错误

dyld[19569]: Library not loaded: @rpath/libgdal.30.dylib
  Referenced from: /private/var/folders/y5/yh59dj093xn_dz8lm0mhv6lh0000gp/T/go-build1573968352/b001/exe/test
  Reason: tried: '/usr/local/lib/libgdal.30.dylib' (no such file), '/usr/lib/libgdal.30.dylib' (no such file)
signal: abort trap

godal依赖于gdal,我是通过conda安装的。因此,dylib位于我的conda文件夹下-/Users/ash/miniconda3/lib而不是/usr/local/lib
如何让程序在/Users/ash/miniconda3/lib中搜索libgdal.dylib而不是/usr/local/lib

zzlelutf

zzlelutf1#

您可以尝试设置GDAL_LIBRARY_PATH=/Users/ash/miniconda3/lib/libgdal.dylib
您可以在运行go run ....的shell中或作为os.Setenv("GDAL_LIBRARY_PATH", "/Users/ash/miniconda3/lib/libgdal.dylib")尝试此操作

jdgnovmf

jdgnovmf2#

将miniconda3 lib目录的路径添加到DYLD_FALLBACK_LIBRARY_PATH环境变量中。在您的示例中,该路径应为:

DYLD_FALLBACK_LIBRARY_PATH=/Users/ash/miniconda3/lib:$DYLD_FALLBACK_LIBRARY_PATH YourGoExecutable

注意:不要使用DYLD_LIBRARY_PATH,因为这将使用clobber现有路径解析,并且很可能导致意外的问题。

相关问题