Ubuntu

在一台伺服器上使用更高版本的庫編譯原始碼並在舊伺服器上使用二進製文件

  • October 23, 2018

我需要最新的libpcre3-dev庫來從原始碼編譯軟體,但是,我伺服器上的作業系統(Ubuntu)的目前發行版只有舊版本,libpcre3-dev沒有可用的反向埠。

我正在考慮使用最新版本在單獨的伺服器上編譯二進製文件並將libpcre3-dev二進製文件安裝回我的實際伺服器。我有兩個問題:

  1. 這行得通嗎?我主要擔心的是libpcre3我的伺服器上的仍然是舊版本,二進製文件libpcre3在執行時是否仍然需要最新的對應,即使它是用最新的編譯的libpcre3-dev
  2. 將二進製文件安裝回我的伺服器的最佳方法是什麼?只需複制二進製文件或將其製作成一個.deb包,然後使用包管理器安裝(如果可能的話)?

如果程序需要在您的伺服器上不可用的較新功能,那麼這些功能在執行時將不可用,因此您的程序可能無法執行。

您可以靜態連結庫。這樣做的缺點是您無法獨立於程序升級庫。如果在該版本的庫中發現安全漏洞,則需要重新建構程序。-lpcre3在連結器命令行中替換為/usr/lib/libpcre3.a.

您可以動態連結並將庫複製到安裝軟體的同一目錄。通過設置庫載入路徑以包含該附加目錄的包裝腳本啟動軟體。

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

引用自:https://unix.stackexchange.com/questions/151659