Linux 程序的第三方库依赖 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
alexlee0728
V2EX    Linux

Linux 程序的第三方库依赖

  •  
  •   alexlee0728 Feb 6, 2024 2154 views
    This topic created in 813 days ago, the information mentioned may be changed or developed.
    如果开发一个 Linux 程序,依赖了很多第三方库,大家是直接引用系统中的? 发现前人是把所有的库都自己编译了一下,然后放到/usr/local/xxx/xxx 下,如果库之间有依赖,编译的时候也要改,然后程序中都是依赖/usr/local/xxx/下的库,完全不引用/usr/lib 或者/usr/local/lib 下的,感觉有点奇怪
    8 replies    2024-02-19 22:27:41 +08:00
    vcn8yjOogEL
        1
    vcn8yjOogEL  
       Feb 6, 2024 via Android
    看你怎么打包了, 一般为了省空间都是尽可能动态链接的
    想简单点就打成 Flatpak 这类通用包, 缺点就是会有重复依赖
    adoal
        2
    adoal  
       Feb 6, 2024
    这种一般是因为,没办法决定客户生产环境用的发行版 and/or 版本,所以/usr/lib 下的库(正常来说应该都是发行版打包的),版本不可控,就会有兼容性问题。如果要去适配和测试多个发行版 and/or 版本,势必增加很大的工作量,大多数公司不会愿意接受这种没有直接产生效益的成本。所以宁肯草台一点,自己打包主要依赖,至少做到行为可控。

    话说,Windows 下面应用软件的第三方依赖不都是这么搞的么。
    MiketsuSmasher
        3
    MiketsuSmasher  
       Feb 7, 2024
    直接静态编译试试?
    passive
        4
    passive  
       Feb 7, 2024 via Android
    自己编译库+rpath

    或者给每个 distro 都打包一份,用 distro 自己的 lib

    或者 container

    静态编译连 lgpl 都逃不过
    weidaizi
        5
    weidaizi  
       Feb 7, 2024
    看你的包用来做啥吧
    * 如果是打包贡献给社区,就编译自己的就好了,最好也加个 rpath (毕竟现在 runpath 的对间接依赖已经无效了),给外部打 portable 比较方便
    * 如果是自己/公司的项目,可以全部依赖都放一起,设置好 rpath ,随便解压到哪里都可以直接跑
    ysc3839
        6
    ysc3839  
       Feb 8, 2024 via Android
    系统包管理有提供就用系统的,否则自己编译,如果是单文件就静态链接,多文件就跟随程序一起打包,不安装进系统
    chhtdd
        7
    chhtdd  
       Feb 8, 2024
    ./thridparty
    tomychen
        8
    tomychen  
       Feb 19, 2024
    从某种程度上来讲,我倒觉得是个好习惯 ,虽然编译过程麻烦了点,但有个好处是最小化依赖系统库,也避免了更新系统,或者更新第三库的时候和系统原有的冲突了.

    典型: macport 和 brew
    About     Help     Advertise     Blog     API     FAQ     Solana     2776 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 14:02 PVG 22:02 LAX 07:02 JFK 10:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86