我需要最新的libpcre3-dev
库来从源代码编译软件,但是,我的服务器上的操作系统(Ubuntu)的当前发行版只有旧版本,libpcre3-dev
并且没有可用的向后移植。
我正在考虑使用最新版本在单独的服务器上编译二进制文件,libpcre3-dev
并将二进制文件安装回我的实际服务器。我有两个问题:
这有效吗?我主要担心的是,
libpcre3
我的服务器上的 仍然是旧版本,libpcre3
即使二进制文件是用最新版本编译的,在运行时是否仍然需要最新版本libpcre3-dev
?将二进制文件安装回我的服务器的最佳方法是什么?只需复制二进制文件或将其放入
.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 "$@"