在Ubuntu 13.10上编译我的二进制文件(node.js的附件)时。然后链接器将libudev.so.1链接。

然后,将二进制文件复制到Ubuntu 12.04计算机并运行二进制文件。然后有一个错误,找不到libudev.so.1。在Ubuntu 12.04上安装了libudev.so.0。

我为gcc提供了参数-ludev

二进制文件需要libudev.so.1。我用以下命令检查了它:

$> strings bin | grep udev
$> ...
$> libudev.so.1

我如何告诉链接器应该使用操作系统提供的任何libudev版本。因此,二进制文件将需要类似libudev.so*的内容。

最佳答案

在神奇的Linux世界中,很难在一台计算机上进行编译和链接,然后将二进制文件复制到另一台计算机上并在其中运行。有很多变化,因为您还经历过并非彼此兼容,因此这使得二进制文件的移植非常困难,即使不是完全不可能。它可能适用于某些设置,而不适用于其他设置。现在您有两种可能性:

  • 我认为,您的12.04是生产环境,因此您无法做任何您想做的事...因此,在这种情况下,请创建与Ubuntu 12.04相同的(虚拟)计算机,然后在其上进行编译和链接。将可执行文件复制到需要在其上运行的12.04。很有可能它将正常工作。
  • 如果关于生产环境的假设不正确,则安装编译器和必要的环境并在远程计算机上编译源代码。这样,您将知道它将始终在该计算机上运行。
  • 10-01 12:02