• 在Ubuntu上安装LibRaw


    项目中需要手动安装一个定制版的rawpy,在安装rawpy之前,需要安装LibRaw库。安装过程踩了一些坑,做个记录,以备后用。

    LibRaw的源码下载地址:Download | LibRaw

    可以根据自己的平台和需要的版本下载,我下载的是0.19版本。

    下载到本地后,解压得到LibRaw-0.19.1目录,进入该目录,进行配置、编译和安装。 编译安装说明可参考该地址:Compilation and Installation | LibRaw

    1. 'aclocal-1.15' is missing on your system.

    第一次时,直接执行的./configure,接着make

    在make时出现报错:'aclocal-1.15' is missing on your system.

     于是全盘查找aclocal:find / -name aclocal,结果并未找到。通过网络搜索,了解到该组件的作用如下:

    aclocal是一个perl脚本程序,它的定义是:aclocal - create aclocal.m4 by scanning configure.ac。autoconf从configure.in这个列举编译软件时所需要的各种参数的模板文件中创建configure。autoconf需要GNU m4宏处理器来处理aclocal.m4,以生成configure脚本。

    GNU官方文档上可以看到aclocal的作用:

    aclocal是automake的一个组成部分,于是我们执行automake --version 查看系统中是否安装automake,发现找不到该命令,于是通过命令安装automake:

    apt-get install automake-1.15

    安装完执行automake --version,发现已经安装成功了:

    2.  libtool:   error: you must specify an output file

    安装完automake之后,执行make命令可以正常往下执行,但是执行到后面会出现题目中的错误。

    网上类似错误的资料不算少,所以比较快定位到原因:可能是由于先将LibRaw的安装包下载到Windows机器上,在Windows机器上解压之后,通过FTP软件上传到Linux服务器时,导致很多shell脚本的可执行权限被取消。手动对各.sh文件添加可执行权限后仍然不行,索性把压缩包上传到服务器,然后在服务器上解压之后再执行配置、编译和安装,这次终于通过了。

    3. ImportError: libraw.so.19: cannot open shared object file

    LibRaw安装完成之后,接下来通过源码安装rawpy (进入rawpy源码目录,pip install -e .),安装成功。然后执行调用rawpy的Python文件时,出现找不到libraw.so的问题。

    查看LibRaw的编译文档,发现默认情况下只会编译输出静态库,没有输出动态库:

    于是尝试在编译LibRaw库的时候,将动态库使能:

    ./configure ----enable-shared

    重新编译完成后,仍然会报上面的错误。到默认安装目录/usr/local/lib下查看,已经生成了.so文件,且版本也对。

    按照以往经验,只有一种可能,就是该路径未加入环境变量,于是进入到/etc/ld.so.conf,将该库路径写入:

    然后执行ldconfig使之生效。

    再次执行应用程序,成功了!

  • 相关阅读:
    docker构建镜像上传到DockerHub
    输入法发展历史
    LinkedList集合
    【Vue】监视属性
    【ARM-0】基本概念
    什么是【固件】?
    JavaScript 中整数的安全范围
    【论文粗读】(NeurIPS 2020) SwAV:对比聚类结果的无监督视觉特征学习
    redis 未授权访问漏洞详解
    探寻蓝牙的未来:从蓝牙1.0到蓝牙5.4,如何引领无线连接革命?
  • 原文地址:https://blog.csdn.net/DeliaPu/article/details/126486906