V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gozfree
V2EX  ›  程序员

通用的C基础库,推荐给还在用 c 的同学们

  •  
  •   gozfree ·
    gozfree · 2018-11-11 14:22:36 +08:00 · 6008 次点击
    这是一个创建于 2236 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如今写C的人越来越少,大都涌向了 ios/android/python/web 方向,寻找C开源项目的,要不是刚打算做码农写C练手打基础,要不是从事服务端开发(也基本用 C++/Java 而不用C),剩下的就是嵌入式硅农。

    各大网站 github,oschina,csdn,在上面 ios/android/web 的资源占太多,做的项目基本都能找到抄的例子,而且对于 python/js 人太幸福了,里边有太丰富的包,节省太多精力。

    说实在的,写C太累了,封装好的易用的库相对太少,想抄找不到,只能自己造轮子,还是方的。

    我在造轮子之前也在 github 上找了一圈,比如 nifflerfox/libsg(半成品已经不维护了)  tboox/tbox (也是很好的库,但是上层功能偏少) davisking/dlib(这个是 C++)  Apr( Apache Portable Runtime Library,感觉也太冗余),glib2 (各种 g_开头的定义受不了)

    只好自己动手 gozfree/libraries,工作项目中重复代码写多了,就提出来作为通用代码,用起来确实很爽,也会把 nginx/ffmpeg/vlc/kernel 里的精炼代码扣出来自己用。

    https://github.com/gozfree/libraries
    https://gitee.com/gozfreee/libraries
    第 1 条附言  ·  2018-11-11 15:41:17 +08:00
    补充下:还有 acl-dev/acl 全面网络服务框架的 C/C++库,chenshuo/muduo 多线程网络库
    20 条回复    2018-11-12 15:27:44 +08:00
    songteng0604
        1
    songteng0604  
       2018-11-11 14:26:30 +08:00
    谢谢
    dazhangpan
        2
    dazhangpan  
       2018-11-11 15:14:11 +08:00   ❤️ 9
    对 C 还是要有信心的,整个计算机世界的基石还是由 C 构建的,包括你提到的 iOS/Android/python。已经逐渐走来的云计算、边缘计算、物联网的世界里对性能、功耗、时延的要求非常严苛,C 这种可以操控细节的语言正是必需的技术。用 Python/js 固然可以享受新语言带来的优势和便捷,但如果不深入探究,也只能沦为层出不穷的新框架的奴仆。建议还是深入掌握 C,这不是一门语言,而是开启计算机系统知识,从别人的框架中获得自由的钥匙;相对新的语言也要掌握,因为这是一个去远方游荡的游子,找到回家的路的方式。
    innoink
        3
    innoink  
       2018-11-11 15:19:42 +08:00 via Android
    你知道 acl 么
    gozfree
        4
    gozfree  
    OP
       2018-11-11 15:33:39 +08:00
    @dazhangpan 大赞最后一句
    gozfree
        5
    gozfree  
    OP
       2018-11-11 15:35:06 +08:00
    @innoink 刚看到,很全面的基础库
    waruqi
        6
    waruqi  
       2018-11-11 15:38:40 +08:00
    很赞! tbox 定位在基础跨平台,所以上层功能确实不多,另外推荐可以试试用 xmake 来实现跨平台构建哦。。
    liuminghao233
        7
    liuminghao233  
       2018-11-11 15:47:44 +08:00 via iPhone
    还有 boost asio (
    gozfree
        8
    gozfree  
    OP
       2018-11-11 15:50:42 +08:00
    @waruqi 感谢大佬回复,感觉 tbox 社区推广很不错,能吸纳更多的人来一起开发,大赞
    waruqi
        9
    waruqi  
       2018-11-11 15:53:23 +08:00 via Android
    @gozfree 哈哈 这是错觉 没社区 也没其他人开发 就我在自娱自乐哦。。= =
    gozfree
        10
    gozfree  
    OP
       2018-11-11 15:54:44 +08:00
    类似的库能举出很多,但其实初衷是想将这套库贡献给玩嵌入式的人,尤其是流媒体方向的,后期会完善和增加 rtsp/rtmp 的协议,比如能够让你快速实现一个 linux 版的 camera 客户端
    huawuya
        11
    huawuya  
       2018-11-11 16:41:40 +08:00
    c++的库用的比较多,poco project,boost 等
    changnet
        12
    changnet  
       2018-11-11 17:53:39 +08:00 via Android
    c++和 c 都是偏底层的,而各个行业都需要针对底层做优化,这些库都是不通用的。我之前我想做通用库,但是几年之后发现,要么我换种语言,拿现成的,要么我自己写,只用 stl 这种基础结构就好。
    t6attack
        13
    t6attack  
       2018-11-11 18:31:07 +08:00
    插个楼,关于 C/C++这个说法。有人说放一起不恰当,因为 C 和 C++是两门语言。
    但我觉得,这种说法没问题。因为 C/C++混写的项目非常多。很难把两者彻底拆开。打开一个大型开源项目源码,既有.c 文件,也有.cpp 文件。而在.cpp 文件里,随处可见 C 语法,比如输出时使用 printf。那么这算 C 开发的还是 C++开发的?只能说它是 C/C++开发的。
    至于不混写的项目,可以称为“纯 C 开发的”。Git 就是纯 C 开发的。当年还为此引爆了一波语言之争。
    https://www.baidu.com/s?wd=Linux%E4%B9%8B%E7%88%B6%E7%82%AE%E8%BD%B0C%2B%2B
    https://www.sogou.com/web?query=Linux%E4%B9%8B%E7%88%B6%E7%82%AE%E8%BD%B0C%2B%2B
    aptx4689
        14
    aptx4689  
       2018-11-11 18:34:33 +08:00
    akakcolin
        15
    akakcolin  
       2018-11-11 21:25:54 +08:00
    我还是很喜欢 c 的,自己也有意识地去积累一些库,谢谢楼主,楼主加油
    gozfree
        16
    gozfree  
    OP
       2018-11-11 22:43:46 +08:00
    @t6attack 并不是想讨论 C 和 C++的语言之争,做项目还是看需求和团队擅长的地方,用不好都会有坑。
    本人喜欢 C 的简单明了,况且有 nginx/ffmpeg 等诸多项目可以参考就够了
    多谢支持
    gozfree
        17
    gozfree  
    OP
       2018-11-11 22:44:56 +08:00
    @aptx4689 librpc 的测试用例,都在 code 里,没有任何秘密
    gozfree
        18
    gozfree  
    OP
       2018-11-11 22:45:16 +08:00
    @akakcolin 感谢!
    gozfree
        19
    gozfree  
    OP
       2018-11-11 23:16:50 +08:00
    @aptx4689 噢,测试 RPC 需要有 RPC server,当时自己买的 VPN,到期不能用了,可以 localhost 测试
    waruqi
        20
    waruqi  
       2018-11-12 15:27:44 +08:00
    @gozfree 给你发了邮件,不知道是否有兴趣加一下我的技术群?大家一起交流
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5178 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:16 · PVG 09:16 · LAX 17:16 · JFK 20:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.