Fw: [問題] 關於 dev lib 手動安裝的問題

作者: gowrite (gowrite)   2021-08-12 06:48:20
※ [本文轉錄自 LinuxDev 看板 #1X55DFly ]
作者: gowrite (gowrite) 看板: LinuxDev
標題: [問題] 關於 dev lib 手動安裝的問題
時間: Thu Aug 12 06:46:37 2021
各位好,
最近在學習用一些套件跟軟體,在安裝階段想到了一個問題,
就是我們在用這些別人寫好的軟體的時候,
常常需要安裝一些 libxxxx-dev 之類的 dev library,
因為這些軟體當初在開發期間也有用到這些程式,
這時候通常就會使用 apt 的方式來安裝這些 library
在 apt 把這些 library 安裝在系統之後,
我想知道這些 library 主要是安裝在哪?並且安裝了什麼東西?
這時候我就有了一些疑問
舉例:
系統告訴我,要編譯 gnupg (gpg) 時,我需要安裝 libassuan library,
所以我找了 apt-get 上面的 libassan-dev 這個 library,
安裝之後,
我發現他在我系統的
/usr/bin/ 裝了 config 檔
/usr/include 裝了 header
/usr/lib/x86_64-linux-gnu 裝了 靜態檔、動態檔
/usr/lib/x86_64-linux-pkgconfig 裝了 pkg-config 檔
/usr/share 裡面裝了 m4 檔,文件檔,一些 copyright 文件,及 manual
我想問的是,如果今天沒有 apt-get 幫我們自動安裝這些 library 的話,
我們自己下載 libassuan 回來之後,
要怎麼把什麼東西放在哪個目錄下?
還是說,基本上沒辦法知道,
只能使用 autogen.sh,然後 configure 之後,
就是直接用 make 讓他自己去塞檔案到系統裡面?
我們從 apt-get install 的 libxxx-dev,
跟我們自己下載 tar 檔案,直接 make 安裝的結果,
是一樣的嗎?
這邊請高手、前輩們解惑一下,
謝謝
作者: EdwardGJLee (LGJ)   2021-08-12 08:21:00
研究一下 GNU autotools 到底是在幹什麼事。
作者: bitlife (BIT一生)   2021-08-12 08:54:00
cc/ld如果沒有指定header/library的path,會自動去系統內建的header/lib目錄搜尋,所以只要掌握放內建搜尋目錄或自行指定搜尋目錄即可正常編譯/連結這個精神,你可以選擇看是要放內建搜尋目錄或自行指定搜尋目錄. 另外套件包的說明文件通常也會告訴你該放哪,缺文件的情況make install之類的target也會透露放的位置
作者: Bencrie   2021-08-12 09:17:00
dpkg -L libxxx-dev
作者: Gold740716 (項為之強)   2021-08-12 14:42:00
linux 慣例是放 /usr/local/lib 之類的,參考 hier(7)
作者: EdwardGJLee (LGJ)   2021-08-12 15:33:00
這是有彈性的,可以在 link 的時候指定 rpath 去找lib,也可以經由 LD_LIBRAY_PATH 變數讓程式去找 lib不是很清楚原 po 的問題的目的?要不要自行走一遭?https://tinyurl.com/3nhkfsy4你用 apt,所以應是 Debian 系的。從他的框架,裡頭會有你需要的答案。但沒必要被框架框住。
作者: holishing   2021-08-21 16:39:00
就發行版套件打包的概念,你爽要設定自己的 prefix 也可以,不要跟其他安裝好的套件衝突到就好。/usr/local 那種是手動編譯用 root 安裝才會出現的東東(在 Linux) 不建議在需要長期維運的環境下,把一坨套件全都 sudo make install 塞進那邊那樣很噁
作者: lantw44 (#######################)   2021-08-21 22:24:00
最近才剛有人把他們的系統拿給我看,/usr/local 亂裝一堆東西,結果系統搜尋函式庫時優先找 /usr/local/lib,導致各種程式使用到 /usr/local/lib 中版本不合的函式庫,最後連開機都有問題。
作者: holishing   2021-08-22 03:15:00

Links booklink

Contact Us: admin [ a t ] ucptt.com