V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mirana
V2EX  ›  程序员

C 为什么没有包管理的工具呢

  •  
  •   Mirana ·
    flex1988 · 2016-04-09 16:13:41 +08:00 · 8274 次点击
    这是一个创建于 2931 天前的主题,其中的信息可能已经有所发展或是发生改变。
    23 条回复    2016-04-11 12:42:01 +08:00
    fovecifer
        1
    fovecifer  
       2016-04-09 16:20:11 +08:00
    yum 源里那些 lib 开头的东西是什么?
    UnisandK
        2
    UnisandK  
       2016-04-09 16:26:42 +08:00
    感觉 Python 这种动态语言的库有一份就行了,所以弄个包管理很方便。。 C 的话还得在库里边区分适用于不同的架构的二进制包,弄出来跟集成在各个系统自己的包管理器里也没差了
    Mirana
        3
    Mirana  
    OP
       2016-04-09 17:01:50 +08:00
    @fovecifer 我是指用在开发中的
    bdbai
        4
    bdbai  
       2016-04-09 17:04:27 +08:00 via Android
    @Mirana libxxx-devel
    VmuTargh
        5
    VmuTargh  
       2016-04-09 17:05:55 +08:00
    C 的包管理工具就是各大发行版的包管理工具
    am241
        6
    am241  
       2016-04-09 17:17:00 +08:00   ❤️ 1
    apt-get install openssl-dev(记错憋打我
    Owenjia
        7
    Owenjia  
       2016-04-09 17:24:05 +08:00   ❤️ 3
    c29551
        8
    c29551  
       2016-04-09 17:27:55 +08:00
    先问是不是,……
    biicode
    fovecifer
        9
    fovecifer  
       2016-04-09 18:15:12 +08:00
    @Mirana 就是开发中啊
    比方说我在开发中需要访问某个 REST API ,我可以用 libcurl 这个库,
    我需要作的就是:
    yum install -y libcurl-devel.x86_64

    然后在代码里 include 那个头文件就可以了。
    原理上跟 maven 是差不多的,但是功能跟易用性上差太多,

    总之:是有包管理工具的,但是确实不是十分好用。
    Akagi201
        10
    Akagi201  
       2016-04-09 18:45:39 +08:00
    有 clib 跟 biicode 不过历史原因, 大量旧代码都不用包管理. 也没个领头人呼吁大家把包管理给用起来.
    tracyone
        11
    tracyone  
       2016-04-09 18:47:21 +08:00 via Android
    @Mirana apt 和 yum 下来的本来就可以用来开发,除了 lib ……还有…… header ,…… dev 这些
    wizardoz
        12
    wizardoz  
       2016-04-09 20:00:41 +08:00
    源里面那些 lib 开头的不是用来开发的?那是用来干什么的?
    Mirana
        13
    Mirana  
    OP
       2016-04-09 21:04:38 +08:00
    @fovecifer @Akagi201

    我的意思是在源码里记住依赖的包以及包的版本,这样我拉下来源码之后,一个脚本就能安装编译好依赖的包,这样就不用手动安装所有的包了。

    或许这个功能用 git submodule 来做?
    hvsy
        14
    hvsy  
       2016-04-09 22:31:31 +08:00 via iPhone   ❤️ 1
    因为 c 语言出来的太早了,包管理这种东西严重依赖网络。而 c 语言的实际应用情况可能连外网都不能访问,或者都是很强的定制型的功能,所以没有统一的标准,而且大公司经过那么多年的积累早就有自己的内部库了,所以没有动力搞这种东西。
    Mutoo
        15
    Mutoo  
       2016-04-09 22:40:45 +08:00
    因为 c 语言的标准库非常完善,需要包管理器的语言,一般标准库都不太成熟,例如 javascript...
    akagi
        16
    akagi  
       2016-04-10 00:29:42 +08:00
    @Mutoo 这是在黑么 .. 还是我没看懂
    Mirana
        17
    Mirana  
    OP
       2016-04-10 00:49:45 +08:00
    @Mutoo 其实 npm 的包都不是官方的标准包
    msg7086
        18
    msg7086  
       2016-04-10 02:41:08 +08:00
    #13 所以其实还是 APT 和 YUM 的问题。
    拉源码 apt-get source package
    拉依赖 apt-get build-dep package
    zhicheng
        19
    zhicheng  
       2016-04-10 06:19:02 +08:00 via Android   ❤️ 2
    1 , C 里边能跨平台,大规模使用的包总共就那么几个, 10 个手指就差不多能数清。
    2 ,静态链接和动态链接,优先使用动态链接。所以没有必要把依赖代码放到项目里,动态链接依赖系统实现。
    3 ,鲜有人在生产环境中使用代码安装软件。
    4 ,大部分会写 C 的工程师,都能实现 leftpad ,这个不是问题。
    xpol
        20
    xpol  
       2016-04-10 09:15:09 +08:00 via Android
    @c29551 biicode 不是发邮件说他们要关门了吗?
    ryerh
        21
    ryerh  
       2016-04-10 13:03:31 +08:00
    各种语言的包管理工具或多或少都依赖 C 写的核心工具。
    narcotics
        22
    narcotics  
       2016-04-11 11:49:00 +08:00
    @zhicheng 黑粗翔
    hitmanx
        23
    hitmanx  
       2016-04-11 12:42:01 +08:00
    @Mutoo c 语言的标准库很完善的?看来是比较的对象的问题..

    我觉得主要原因还是 c 语言偏底层,且是平台相关的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5446 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 03:13 · PVG 11:13 · LAX 20:13 · JFK 23:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.