關於linxu下 lib庫相關問題的

2021-08-08 01:38:06 字數 1091 閱讀 4947

因為要寫個自動打版工具,發現scp無法使用。因為openssl庫太過老舊,所以就公升級了一下。用yum公升級之後,scp確實可以使用了。但是原來專案的libssl.so卻出現了問題,cmake編譯專案的時候無法找到libssl庫,報錯 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: no such file or directory。

發現libssl庫的版本對不上了。用ln -s建立軟連線之後,讓專案使用高版本的libss庫,專案編譯通過了。但是啟動專案的時候,發現編譯的時候騙過了編譯器,但是啟動不了,版本公升級應該改動了不少東西,導致了專案裡邏輯出現了問題。(原來是這樣 ./libssl.so -> libssl.so.0.9.8e,變成了 ./libssl.so -> libssl.so.1.1.1)。又手動安裝之前的版本之後,用ln -s 建立軟連線之後,可以正常啟動了。相當於lisssl.so對應了兩個版本,乙個是0.9.8e,乙個是1.1.1。發布到外網的時候又出現了問題,因為外網libssl的版本是系統自帶的,需要公升級,考慮到以後經常發布需要不停的公升級ssl庫的情況,只能把ssllib回退到之前的版本。

通過  ldd $(which program)  命令可以看到當前啟動的程式會用到哪些lib庫,以及是否有響應的庫

載完畢後解壓,注意編譯安裝openssl需要c和prel環境。

通過./config shared zlib-dynamic 來生成makefile檔案。

然後make
生成

libssl.so.1.0.0

libcrypto.so.1.0.0

將兩個檔案拷貝到   /usr/lib64  

建立軟鏈結(ln源就是上面查出的對應版本的庫檔案):

cd /usr/lib64/

ln -s libssl.so.1.0.0          libssl.so.10

ln -s libcrypto.so.1.0.0    libcrypto.so.10

刪除軟連線用的是 rm /usr/lib64/libcrypto.so.1.1 命令

關於lib庫的版本問題

源文件 msc ver 定義編譯器的版本。下面是一些編譯器版本的 msc ver 2的鏈結 ms vc 10.0 msc ver 1600 ms vc 9.0 msc ver 1500 ms vc 8.0 msc ver 1400 ms vc 7.1 msc ver 1310 ms vc 7.0 m...

Linux下新增lib庫檔案

在 etc ld.so.conf 檔案中新增庫的搜尋路徑。將自己可能存放庫檔案的路徑都加入到 etc ld.so.conf中是明智的選擇。新增方法也極其簡單,將庫檔案的絕對路徑直接寫進去就ok了,一行乙個。例如 usr x11r6 lib 新增過路徑後使用命令ldconfig 更新ld.so.cac...

vs下製作和使用 lib靜態庫

關於鏈結庫的講解在這個 上有不錯的講解 下面寫一下自己的實踐 首先可以建立乙個空工程,然後再工程屬性 configuration properties general configuration type改為.lib,建立可執行工程預設情況下是.exe 然後,可以在這個工程中建立標頭檔案和原始檔,如...