作者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/cn.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