在一台服务器上使用较新的库编译源代码并在较旧的服务器上使用二进制文件

在一台服务器上使用较新的库编译源代码并在较旧的服务器上使用二进制文件

我需要最新的libpcre3-dev库来从源代码编译软件,但是,我的服务器上的操作系统(Ubuntu)的当前发行版只有旧版本,libpcre3-dev并且没有可用的向后移植。

我正在考虑使用最新版本在单独的服务器上编译二进制文件,libpcre3-dev并将二进制文件安装回我的实际服务器。我有两个问题:

  1. 这有效吗?我主要担心的是,libpcre3我的服务器上的 仍然是旧版本,libpcre3即使二进制文件是用最新版本编译的,在运行时是否仍然需要最新版本libpcre3-dev

  2. 将二进制文件安装回我的服务器的最佳方法是什么?只需复制二进制文件或将其放入.deb包中,然后使用包管理器进行安装(如果可能)?

答案1

如果程序需要您的服务器上不可用的较新功能,那么这些功能在运行时将不可用,因此您的程序可能无法运行。

您可以静态链接该库。这样做的缺点是您无法与程序分开升级库。如果在该版本的库中发现安全漏洞,您将需要重建程序。-lpcre3在链接器命令行中替换为/usr/lib/libpcre3.a.

您可以动态链接并将库复制到安装软件的同一目录中。通过包装脚本启动软件,该脚本将库加载路径设置为包含该附加目录。

#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/my-software/lib"
/opt/my-software/bin/foo "$@"

答案2

你的第一个问题实际上是关于链接,所以这取决于您是否静态链接。如果您这样做并且两个平台具有相同的架构,那么它应该可以工作。

安装自编译二进制文件的一个好方法是使用检查安装。它创建一个 Debian 软件包,可以使用您最喜欢的软件包管理器安装和卸载该软件包。

相关内容