通用的C基础库,推荐给还在用 c 的同学们 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gozfree
V2EX    程序员

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

  gozfree
gozfree 2018-11-11 14:22:36 +08:00 6320 次点击
这是一个创建于 2525 天前的主题,其中的信息可能已经有所发展或是发生改变。
如今写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     Solana     2727 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 15:00 PVG 23:00 LAX 08:00 JFK 11:00
Do have faith in what you're doing.
ubao 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