作者gowrite (gowrite)
看板Linux
標題Fw: [問題] 關於 dev lib 手動安裝的問題
時間Thu Aug 12 06:48:20 2021
※ [本文轉錄自 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 安裝的結果,
是一樣的嗎?
這邊請高手、前輩們解惑一下,
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.11.60 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LinuxDev/M.1628721999.A.BFC.html
※ 編輯: gowrite (111.255.11.60 臺灣), 08/12/2021 06:48:09
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: gowrite (111.255.11.60 臺灣), 08/12/2021 06:48:20
1F:→ EdwardGJLee: 研究一下 GNU autotools 到底是在幹什麼事。 08/12 08:21
2F:→ bitlife: cc/ld如果沒有指定header/library的path,會自動去系統內 08/12 08:54
3F:→ bitlife: 建的header/lib目錄搜尋,所以只要掌握放內建搜尋目錄或自 08/12 08:55
4F:→ bitlife: 行指定搜尋目錄即可正常編譯/連結這個精神,你可以選擇看 08/12 08:55
5F:→ bitlife: 是要放內建搜尋目錄或自行指定搜尋目錄. 另外套件包的說 08/12 08:56
6F:→ bitlife: 明文件通常也會告訴你該放哪,缺文件的情況make install之 08/12 08:57
7F:→ bitlife: 類的target也會透露放的位置 08/12 08:57
8F:推 Bencrie: dpkg -L libxxx-dev 08/12 09:17
感謝大家的回答,
我想問另外一個問題,就是所謂的 dev library 有所謂標準的作法嗎?
也就是應該有哪些檔案,應該放到哪些目錄?
這些有標準,或者是 common style or convention 嗎?
謝謝
※ 編輯: gowrite (111.255.11.60 臺灣), 08/12/2021 14:20:37
9F:推 Bencrie: dev 裡面只有包 header、pkg-config、libxxx.so 的 08/12 14:24
10F:→ Bencrie: symbolic link 08/12 14:24
11F:→ Bencrie: 編譯、開發才需要的東西才放 -dev,這不難判斷吧 08/12 14:25
12F:推 Bencrie: 大部分 distro 下 configure 都會掛 --prefix=/usr 08/12 14:28
13F:→ Bencrie: --libdir=/usr/lib/{ARCH} 之類的 08/12 14:28
14F:→ Bencrie: 你想自己包也可以 configure 照下,然後 08/12 14:29
15F:→ Bencrie: make DESTDIR=/path/to/install 把東西裝到打包的 prefix 08/12 14:30
16F:→ Bencrie: ^install 08/12 14:30
17F:→ Bencrie: 這樣你就可以在真的裝進系統前知道到底會裝什麼 08/12 14:31
18F:→ Bencrie: distro 包的跟從 upstream 載下來的不見得會一樣 08/12 14:32
19F:→ Bencrie: 不過同版本的就算有 patch 過 API/ABI 通常是不會變 08/12 14:33
20F:推 Gold740716: linux 慣例是放 /usr/local/lib 之類的,參考 hier(7) 08/12 14:42
21F:→ EdwardGJLee: 這是有彈性的,可以在 link 的時候指定 rpath 去找 08/12 15:33
22F:→ EdwardGJLee: lib,也可以經由 LD_LIBRAY_PATH 變數讓程式去找 lib 08/12 15:34
23F:→ EdwardGJLee: 不是很清楚原 po 的問題的目的?要不要自行走一遭? 08/12 20:09
25F:→ EdwardGJLee: 你用 apt,所以應是 Debian 系的。從他的框架,裡頭 08/12 20:12
26F:→ EdwardGJLee: 會有你需要的答案。但沒必要被框架框住。 08/12 20:13
27F:推 holishing: 就發行版套件打包的概念,你爽要設定自己的 prefix 也 08/21 16:39
28F:→ holishing: 可以,不要跟其他安裝好的套件衝突到就好。 08/21 16:40
29F:→ holishing: /usr/local 那種是手動編譯用 root 安裝才會出現的東東 08/21 16:42
30F:→ holishing: (在 Linux) 不建議在需要長期維運的環境下,把一坨套件 08/21 16:43
31F:→ holishing: 全都 sudo make install 塞進那邊 08/21 16:43
32F:→ holishing: 那樣很噁 08/21 16:44
33F:推 lantw44: 最近才剛有人把他們的系統拿給我看,/usr/local 亂裝一堆 08/21 22:24
34F:→ lantw44: 東西,結果系統搜尋函式庫時優先找 /usr/local/lib,導致 08/21 22:25
35F:→ lantw44: 各種程式使用到 /usr/local/lib 中版本不合的函式庫,最 08/21 22:26
36F:→ lantw44: 後連開機都有問題。 08/21 22:27
37F:→ holishing: 慘 08/22 03:15