登录
首页 >  Golang >  Go问答

libtensorflow.so:无法打开共享对象文件:没有这样的文件或目录

来源:stackoverflow

时间:2024-04-15 21:27:33 338浏览 收藏

今天golang学习网给大家带来了《libtensorflow.so:无法打开共享对象文件:没有这样的文件或目录》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我使用以下命令创建了一个 aws lambda 层:

aws lambda publish-layer-version --layer-name tensorflowlambdalayer --compatible-runtimes go1.x --zip-file fileb://tensorflowlayer.zip

这是生成的 arn:`arn:aws:lambda:us-east-1:757767972066:layer:tensorflowlambdalayer:1

当我尝试通过 aws sam 运行使用 tesnroflow 库的 lambda 函数时,它陷入“安装”步骤:

2019-07-18 15:51:29 mounting /tmp/tmpgz8cb80s as /var/task:ro,delegated inside runtime container

一旦我用 ctrl + c 终止它,我就会收到以下消息:

^c/var/task/bin/inference: error while loading shared libraries: libtensorflow.so: cannot open shared object file: no such file or directory
makefile:82: recipe for target 'run-inference' failed

这是我的template.yml的关键部分:

Parameters:
  LambdaTensorflowLayerArn:
    Type: String
    Default: 'arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1'
  LambdaFFMPEGLayerArn:
    Type: String
    Default: 'arn:aws:lambda:us-east-1:757767972066:layer:ffmpeg:1'

Inference:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: bin/inference
      Runtime: go1.x
      Timeout: 300
      CodeUri: ./bin/inference.zip
      Layers: 
         - Ref: LambdaFFMPEGLayerArn
         - Ref: LambdaTensorflowLayerArn

我不确定是什么原因造成的


解决方案


我对消息也有同样的问题

就我而言,它尝试将 tensorflow 与 go 结合使用。问题是,如果包留在 /usr/local (推荐)或其他路径中,libtensorflow.so (和 libtensorflow_framework.so)的 official installation 似乎不起作用。按照 /usr/local 的建议使用 ldconfig 也没有帮助。 另外,在设置 ld_library_path 之前,gcc 的基本示例不起作用(即使使用 -l。这让我感到惊讶):

$ gcc -i/usr/local/include -l/usr/local/lib hello_tf.c -ltensorflow -o hello_tf
 $ ./hello_tf 
 ./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: no such file or directory
 $ export ld_library_path=$ld_library_path:/usr/local/lib
 $ ./hello_tf 
 hello from tensorflow c library version 1.14.0
 $ unset ld_library_path 
 $ ./hello_tf 
 ./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: no such file or directory

在我的例子中,这是 /usr/local 的内容

$ ll /usr/local/lib
 total 245424
 lrwxrwxrwx. 1 root root        28 dic 31  1999 libtensorflow_framework.so -> libtensorflow_framework.so.1
 lrwxrwxrwx. 1 root root        33 dic 31  1999 libtensorflow_framework.so.1 -> libtensorflow_framework.so.1.14.0
 -r-xr-xr-x. 1 root root  34748520 dic 31  1999 libtensorflow_framework.so.1.14.0
 lrwxrwxrwx. 1 root root        18 dic 31  1999 libtensorflow.so -> libtensorflow.so.1
 lrwxrwxrwx. 1 root root        23 dic 31  1999 libtensorflow.so.1 -> libtensorflow.so.1.14.0
 -r-xr-xr-x. 1 root root 216546752 dic 31  1999 libtensorflow.so.1.14.0

另一个解决方案是手动创建到 /usr/lib 的符号链接。 我不知道如何在无服务器配置中做到这一点。 本来打算在评论中写下这一点,但仍然没有足够的代表。

以上就是《libtensorflow.so:无法打开共享对象文件:没有这样的文件或目录》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>