在 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 世界中,很难在一台机器上编译和链接,然后将二进制文件复制到另一台机器上运行。有很多变化,因为您也经历过并非所有 aer 都相互兼容,所以这使得二进制文件的移植非常困难,如果不是完全不可能的话。它可能适用于某些设置,但不适用于其他设置。现在你有两种可能性:
我假设,您的 12.04 是一个生产环境,所以您不能为所欲为...因此,在这种情况下,创建一个与 Ubuntu 12.04 编译和链接相同的(虚拟)机器。将可执行文件复制到您需要在其上运行的 12.04。它很可能会毫无问题地工作。
如果关于生产环境的假设不成立,则安装编译器和必要的环境并在远程机器上编译源代码。这样你就会知道它会一直在那台机器上工作。
关于c++ - Linux 链接到任何可用的库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681004/