无法从终端运行二进制可执行文件

无法从终端运行二进制可执行文件

我正在尝试运行在此站点找到的二进制文件http://shaddack.brutowave.com/projects/sw_qr2laser/我将其设置为可执行文件并尝试运行......

laptop@XPS15:~/Downloads$ qr2laser
qr2laser: command not found
laptop@XPS15:~/Downloads$

或者 ...

  laptop@XPS15:~/Downloads$ ./qr2laser
  ./qr2laser: error while loading shared libraries: libMagickWand.so.5: 
  cannot open shared object file: No such file or directory
  laptop@XPS15:~/Downloads$

它需要 imagemagick 才能运行,并且已经安装。

我也尝试编译源代码但同样遇到与 imagemagick 相关的错误。

这是引用错误吗?imagemagick 应该位于不同的路径中吗?

答案1

目前唯一支持的 Ubuntu 版本libmagickwand5是 14.04(支持到 2019 年 4 月),因此安装它是一种可能的解决方案。

答案2

这里有两种方法,你可以

  1. 从源代码编译适用于您系统的软件qr2laser.c
  2. qr2laser按您尝试的方式使用二进制文件。

第一个是您应该首先尝试的。在您的系统上进行编译意味着编译器将深入研究您的确切系统以查找软件所需的程序和库并创建二进制文件。如果缺少依赖项,即编译器找不到软件所需的程序,您将收到一条错误消息,告知您出了什么问题。
第二个缺点是您的系统需要具有与编译二进制文件的系统相同的先决条件。在您的例子中显然不是这样,如果您没有使用 Ubuntu 14.04,则很难(总体而言不是一个好主意!)安装缺少的库libMagickWand.so.5

自己编译软件(可行的方法)

  1. 安装必要的编译器和软件的先决条件:

    sudo apt install gcc libmagickwand-6.q16-2
    
  2. 下载软件的源代码:

    wget http://shaddack.brutowave.com/projects/sw_qr2laser/qr2laser.c
    
  3. 编译它:

    gcc -std=c99 -o qr2laser `pkg-config --cflags --libs MagickWand` qr2laser.c
    
  4. 如果一切顺利,你现在将有一个qr2laser可以启动的二进制文件:

    ./qr2laser
    

使用预编译的二进制文件(最后的手段)

对于旧软件来说,虚拟机这样做的原因是因为你不需要在工作安装中安装陈旧的软件。

  1. 安装virtualbox

    sudo apt install virtualbox
    sudo apt install virtualbox-ext-pack # optional, for e.g. USB 2.0 support 
    
  2. 设置虚拟机并安装匹配的操作系统,在本例中为 Ubuntu 14.04。
  3. 在虚拟机内部,安装软件的先决条件并运行它:

    sudo apt install libmagickwand5
    /path/to/qr2laser
    

相关内容