在Ubuntu 13.10上编译我的二进制文件(addon for node.js)。 那么链接器就会把libudev.so.1链接起来。
然后我将这个二进制文件复制到一个Ubuntu 12.04机器上并运行这个二进制文件 然后有一个libudev.so.1找不到的错误。 在Ubuntu 12.04上安装了libudev.so.0。
我提供gcc与param -ludev
二进制期望libudev.so.1。 我用这个命令检查它:
$> strings bin | grep udev $> ... $> libudev.so.1
我怎么能告诉链接器它应该采取任何提供的libudev版本的操作系统。 所以二进制文件需要像libudev.so*
这样的东西。
在神奇的Linux世界中,在一台机器上编译和链接非常困难,然后将二进制文件复制到另一台机器上并在那里运行。 有很多变化,因为你也经历过并不是所有的兼容,所以这使得二进制文件的移植非常困难,如果不是完全不可能的话。 它可能适用于某些设置,而不适用于其他设置。 现在你有两种可能性:
我认为,你的12.04是一个生产环境,所以你不能做任何你想做的事情……所以,在这种情况下,创建一个相同的(虚拟)机器到Ubuntu 12.04编译和链接。 将可执行文件复制到需要在其上运行的12.04。 机会是没有问题的。
如果关于生产环境的假设不成立,那么安装编译器和必要的环境,并在远程机器上编译源代码。 这样你就会知道它会一直在那台机器上工作。
在你的12.04中找出libudev.so.0
在哪个位置。 然后使用libudev.so.1
与该库建立符号链接,然后参阅。
为了使符号链接:
ln -sf /opt/lib/libudev.so.1 /opt/lib/libudev.so.0