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

2018-11-11 14:22:36 +08:00
 gozfree
如今写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
6005 次点击
所在节点    程序员
20 条回复
songteng0604
2018-11-11 14:26:30 +08:00
谢谢
dazhangpan
2018-11-11 15:14:11 +08:00
对 C 还是要有信心的,整个计算机世界的基石还是由 C 构建的,包括你提到的 iOS/Android/python。已经逐渐走来的云计算、边缘计算、物联网的世界里对性能、功耗、时延的要求非常严苛,C 这种可以操控细节的语言正是必需的技术。用 Python/js 固然可以享受新语言带来的优势和便捷,但如果不深入探究,也只能沦为层出不穷的新框架的奴仆。建议还是深入掌握 C,这不是一门语言,而是开启计算机系统知识,从别人的框架中获得自由的钥匙;相对新的语言也要掌握,因为这是一个去远方游荡的游子,找到回家的路的方式。
innoink
2018-11-11 15:19:42 +08:00
你知道 acl 么
gozfree
2018-11-11 15:33:39 +08:00
@dazhangpan 大赞最后一句
gozfree
2018-11-11 15:35:06 +08:00
@innoink 刚看到,很全面的基础库
waruqi
2018-11-11 15:38:40 +08:00
很赞! tbox 定位在基础跨平台,所以上层功能确实不多,另外推荐可以试试用 xmake 来实现跨平台构建哦。。
liuminghao233
2018-11-11 15:47:44 +08:00
还有 boost asio (
gozfree
2018-11-11 15:50:42 +08:00
@waruqi 感谢大佬回复,感觉 tbox 社区推广很不错,能吸纳更多的人来一起开发,大赞
waruqi
2018-11-11 15:53:23 +08:00
@gozfree 哈哈 这是错觉 没社区 也没其他人开发 就我在自娱自乐哦。。= =
gozfree
2018-11-11 15:54:44 +08:00
类似的库能举出很多,但其实初衷是想将这套库贡献给玩嵌入式的人,尤其是流媒体方向的,后期会完善和增加 rtsp/rtmp 的协议,比如能够让你快速实现一个 linux 版的 camera 客户端
huawuya
2018-11-11 16:41:40 +08:00
c++的库用的比较多,poco project,boost 等
changnet
2018-11-11 17:53:39 +08:00
c++和 c 都是偏底层的,而各个行业都需要针对底层做优化,这些库都是不通用的。我之前我想做通用库,但是几年之后发现,要么我换种语言,拿现成的,要么我自己写,只用 stl 这种基础结构就好。
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
2018-11-11 18:34:33 +08:00
akakcolin
2018-11-11 21:25:54 +08:00
我还是很喜欢 c 的,自己也有意识地去积累一些库,谢谢楼主,楼主加油
gozfree
2018-11-11 22:43:46 +08:00
@t6attack 并不是想讨论 C 和 C++的语言之争,做项目还是看需求和团队擅长的地方,用不好都会有坑。
本人喜欢 C 的简单明了,况且有 nginx/ffmpeg 等诸多项目可以参考就够了
多谢支持
gozfree
2018-11-11 22:44:56 +08:00
@aptx4689 librpc 的测试用例,都在 code 里,没有任何秘密
gozfree
2018-11-11 22:45:16 +08:00
@akakcolin 感谢!
gozfree
2018-11-11 23:16:50 +08:00
@aptx4689 噢,测试 RPC 需要有 RPC server,当时自己买的 VPN,到期不能用了,可以 localhost 测试
waruqi
2018-11-12 15:27:44 +08:00
@gozfree 给你发了邮件,不知道是否有兴趣加一下我的技术群?大家一起交流

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX