下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

C语言资源大全,总有一条是你需要的!

作者:课课家教育     来源: http://www.kokojia.com点击数:872发布时间: 2016-01-21 14:13:02

标签: C语言C++C语言教程

大神带你学编程,欢迎选课

  维护的一个 C 语言资源列表,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。

  构建系统

  下面是一些 C 项目的自动化构建和测试工具。

  •aimake – 一个被设计来避免复杂配置的构建工具。GNU GPL3 或更高版本。

  •Autoconf – 一个可扩展的 M4 宏指令包,提供命令行脚本来自动配置软件源码包,是 Autotools 的一部分。GNU GPL3 或更高版本。

  •Automake – 一个自动生成符合 GNU 代码标准的 Makefile.in 文件的工具。需要与 Autoconf 配合使用,它也是 Autotools 的一部分。GNU GPL3 或更高版本。

  •Jam – 一个构建系统,它被设计的比make更加易用。隐式地理解 C 的构建规则。Jam License。

  •Libtool – 一个通用库支持脚本,是 Autotools 的一部分。GNU GPL3 或更高版本。

  •Meson – 一个非常快,用户友好的构建系统,基于 Ninja。Apache2.0.

  编译器

  •Clang – 一个基于 LLVM 的 C 的编译器,支持 C11 标准。NCSA.

  •CompCert – 一个经过充分验证的 C 编译器。支持几乎所有的 C89 标准。GNU GPL2.1 或更高版本。

  •GCC – 在它的编译器集合中提供了 C 编译器。支持 C11 和 OpenMP 的标准。GNU GPL3 或更高版本。

  •PCC – 一个值得尊敬的 C 编译器,支持 C99 标准。Various licenses,完全免费。

  •TCC – 一个迷你,速度快的 C 编译器,支持 C99(除了复杂的类型)。 GNU LGPL2.1

  加密

  •GnuTLS – 一个安全通信库,实现了 SSL,TLS 和 DTLS。GNU GPL2.1 或更高版本。

  •libgcrypt – 一个通用的密码库,支持多种加密方法。 GNU LGPL2.1 (代码),GNU GPL2.1 或更高版本(说明书和工具)。

  •OpenSSL – 一个 SSL 和 TLS 协议的实现,还包括一个加密库。Dual Licensed under the OpenSSL License and the SSLeay License。

  •libsodium – 一个现代,易用的加密库。Expat。

  •libtomcrypt – 一个相当全面,模块化和可移植的工具集。公开领域。

  •mbed TLS – 一个 C 实现的加密库。Apache2.0。

  数据库

  下面列出了基于 C API 的数据库和数据存储

  •BerkeleyDB – 一个高性能的嵌入式键值对数据库。GNU AGPLv3。

  •Hiredis – 一个极简的 Redis 客户端。3-clause BSD。

  •LMDB – 一个极快,极简的嵌入式键值对数据存储系统。newOpenLDAP。

  •MariaDB – 一个强壮,可扩展和可靠的 SQL 服务器,设计来作为 MySQL 的替代品。3-clause BSD。

  •mongo-c-driver – 一个高性能的 MongoDB 客户端。Apache2.0.

  •PostgreSQL – 一个强大的对象关系数据库系统。PostgreSQL licence。

  •recutils – 一个工具和 C 库的集合,用于访问可编辑,纯文本的名为 recfiles 的数据库文件。GNU GPL3 或更高版本。

  •Redis – 一个先进的键值对存储系统。3-clause BSD。

  •sophia – 一个现代,可嵌入的键值对数据库。FreeBSD。

  •SQLite – 一个自包含,无服务器,零配置,支持事务的 SQL 数据库引擎,包括 C 接口。公开领域。

  •UnQLite – 一个自包含,无服务器,零配置,支持事务的 NoSQL 数据库引擎,包括 C 接口。FreeBSD。

  文档生成

  •Cxref – 生成 C 程序的文档,支持 LaTeX,HTML, RTF 或者 SGML 的格式。GNU GPL2.1

  •DocOnce – 一种朴素的标签标记语言,可以用来生成多种格式的文档。3-clause BSD.

  •Doxygen – 一个事实上的标准工具,用于从注释的代码中生成 C 文档。能够生成多种格式的文档。GNU GPL2.1。

  •GTK-Doc – 一个从注释的代码中生成 C 文档的工具,支持 Autotools GNU GPL2.1(代码), GNU FDL1.1。

  编辑器

  这些是特别精致,IDE 类型的编辑器。如果你想要一个程序员的文本编辑器,看别的地方。此外,不管你选择哪一款编辑器,它都支持 C。

  •Anjuta DevStudio – GNOME IDE。 GNU GPL2.1。

  •Code::Blocks – 一个可扩展,可配置的 IDE,支持 C。GNU GPL3。

  •CodeLite – 一个跨平台的 IDE。 GNU GPL2.1。

  •Eclipse – 一个用java写成的 IDE。 EPL。

  •Geany – 一个很小很快的 IDE。 GNU GPL2.1及更高版本。

  •KDevelop – KDE IDE. GNU GPL2.1。

  环境

  下面列出了被设计来引领 Windows 进入支持 C 的 21 世纪的技术。

  •Cygwin – 被设计用于在 Windows 下模拟 POSIX 兼容环境。Various licenses, all free。

  •MinGW-w64 – 一个 Windows 下极简的 C 开发环境,支持 64 位。Various licenses, all free。

  框架

  这一节包括提供数据结构的大型库和你所期待“现代”的标准库。

  •APR – Apache Portable Runtime;另一个跨平台的实用函数库。Apache2.0。

  •C Algorithms – 一个常用算法和数据结构的集合。

  •CPL – The Common Pipeline Library;一系列详尽,高效和强壮的软件工具包。GNU GPL2.1。

  •EFL – 一个大型实用数据结构和函数的的集合。多种许可证,完全免费。

  •GLib – 一个便携,高效和强大的实用函数和数据结构库。GNU LGPL2.1。

  •GIO – 一个现代和易用的 VFS API。[GNU LGPL2.1]。

  •GObject – 一个 C 的面向对象系统和对象模型。GNU LGPL2.1。

  •libnih – 一个轻量级的 C 函数和数据结构库。GNU GPL2.1。

  •libU – 一个提供基本实用函数的迷你库,包括内存分配,字符串处理和日志功能。

  •PBL – 一个包括实用函数,特色数据结构等的大型库。GNU LGPL2.1及更高版本(库),GNU GPL2.1及更高版本(测试代码)。

  •qlibc – 一个简单且强大的 C 库,当我们想要小且轻的库时,可作为 Glib 的替代品。qLib license (类似于 FreeBSD).

  •stb – 一系列单文件 C 库。公共领域。

  游戏编程

  引擎

  这些作为 C 游戏编程代码的例子。

  •Corange – 一个纯 C 的游戏引擎。FreeBSD。

  •Darkplaces – 一个 Quake2 引擎的修改版本。GNU GPL2.1。

  •ioquake3 – Quake3 引擎,终于免费啦。GNU GPL2.1。

  •Orx – 一个便携,轻量级,插件化,数据驱动,面向 2D 的游戏引擎。zlib。

  •Quake2 – Quake2 引擎。GNU GPL2.1。

  •Spearmint – 一个为 FPS 游戏设计的引擎。GNU GPL3及更高版本。

  资源

  这些是排序过的对游戏编程有用的库。

  •Allegro – 一个跨平台,视频游戏开发和多媒体库。zlib。

  •Chipmunk2D – 一个快且轻量级的 2D 游戏物理库。Expat。

  •CSFML – 一个用 C 封装的 SFML。zlib。

  •FreeGLUT – 一个替代性的 OpenGL 实用工具包。允许用 OpenGL 上下文创建和管理窗口。X11。

  •GLFW – 一个使用 OpenGL 上下文创建窗口的多平台库。zlib。

  •libao – 一个有多种输出的跨平台音频库。GNU GPL2.1及更高版本。

  •RetroArch – libretro 的参考前端。GNU GPL3。

  •SDL – 一个跨平台库,通过 OpenGL 提供音频,键盘,鼠标,操纵杆和图形硬件的底层访问。zlib。

  •SDL2- 一个跨平台库,通过 OpenGL 提供音频,键盘,鼠标,操纵杆和图形硬件的底层访问。这是最新版本。zlib。

  通用编程

  •klib – 小且轻量级的常用算法和数据结构实现。Expat。

  图像

  •Cairo – 一个 2D 图像库。GNU LGPL2.1 或者 MPLv1.1。

  •Cogl – 一个 GPU 图像和实用 API。Expat(依赖使用 3-clause BSD 许可,库使用 LGPLv2.1 许可)。

  •Clutter – 一个基于 OpenGL 的 UI 库。GNU LGPL2.1。

  •heman – 一个迷你图像实用工具库,处理高度图,法线图,距离场等。Expat。

  •libcaca – 一个基于终端接口的 ASCII 渲染器。WTFPLv2。

  •libimagequant – 小且轻量级的库,用于高质量的从 RGBA 图像到 8 位像素图的转换。FreeBSD。

  •libjpeg-turbo – 一个更快的读写 JPEG 文件库。Various licences。

  •libpng – 官方 PNG 参考库。libpng license。

  •libxmi – 一个光栅化 2D 位图的函数库。GNU GPL3 或更高版本。

  •mozjpeg – 一个提升 JPEG 图像质量的编码器。3-clause BSD。

  •OpenGL – 一个高性能图像的工业标准,提供了原生 C语言 绑定。Various licenses。

  图像用户接口

  这些具体来说就是控件工具包

  •GTK+ – 一个跨平台的控件工具包。GNU LGPL2.1。

  •IUP – 另一个跨平台的控件工具包。Expat。

  •Tk – 一个基本控件工具包,Tcl/Tk 的一部分。Tcl/Tk License。

  •XForms Toolkit – 一个为 XWindow 设计的控件工具包。GNU LGPL2.1。

  JSON

  •Jansson – 一个编码,解码和处理 JSON 的 C 库。Expat。

  •jsmn – 一个极简的 JSON 解析器。Expat。

  •json-c – 一个处理 JSON 的库。Expat。

  •WJElement – 高级 JSON 处理库,支持 JSON Schema。任意版本的 LGPL。

  •YAJL – 一个很快的 JSON 流解析 C 库。ISC。

  学习,参考和指南

  下面列出了学习 C 编程的资源,或者跟 C 编程相关的有用的东西。

  在线

  参考

  •SEI CERT C 编码标准

  •C FAQ – comp.lang.c 常见问题

  •GNU/Linux 下 C/POSIX 标准库实现的比较

  •C11 标准草案

  •GNU C 参考手册

  •Robert Pike 的 C 笔记

  初级

  •指针教程

  •C 语言指针 5 分钟教程

  •C 语言内存地址基础

  •C 语言函数指针基础

  •C 语言指针和数组基础

  •构建 C 项目

  •C 编程百科全书

  •“有趣”的 C 介绍

  •用 GDB 学习 C

  •POSIX 线程编程指南 (有点过时,但大部分还是有效和有用的)

  •GNU C 编程指南 (在线 PDF)

  •C 语言中的模板

  中级

  •8 个你应该知道的 GDB 技巧

  •10 个 C99 技巧

  •深入并发:尝试互斥锁和原子操作

  •OpenMP 介绍 (视频)

  •OpenMP 指南 (针对 OpenMP3 标准)

  •memcpy 与 memmove 的比较

  •MPI 指南

  •C 语言中一些未知特性或者技巧

  •失落的C语言结构体封装艺术

  •C 程序员需要了解的内存知识

  •每个 C 程序员需要知道的未定义行为知识

  高级

  •C 中的高级元编程

  •一个快速教程:如何实现和调试 malloc,free,calloc,和 realloc

  •位操作技巧

  •我不懂 C

  •在 C 语言中实现智能指针

  •C 中的内联函数

  •C 中的自定义控制结构元编程

  •用 C 的宏解决临时内存问题

  •C 语言中一些不为人知的角落

  •编写高效的 C 和 C 代码优化

  自学教程

  •C 语言认证协会预备课程

  实体书

  参考资料

  •C: A Reference Manual 5E – C99 完全参考手册

  •C Pocket Reference – C99 简明参考手册

  •The C Programming Language 2E – 第一本 C 语言书籍,由 C 的创造者编写。

  初级

  •C Primer Plus 6E – 一个全面的 C11 编程指南。

  •C Programming: A Modern Approach – 一本极好的学习 C 基础的书。

  •Head First C – 一本“深入浅出”风格的学习 C 的书籍。

  中级

  •21st Century C – 一本非常好的 C 语言书籍,可作为第二选择。

  •Understanding and Using C Pointers – 一本深入讨论 C 指针的书。

  •ZeroMQ – 一本介绍如何用 C 使用 ZeroMQ 的书。

  高级

  •Expert C Programming: Deep C Secrets – 一本从有趣,深度和娱乐的视角分析 C 内部结构的书籍。

  多媒体

  •FFMPEG – 一个完整,跨平台的录音,转换和流化视频以及音频的解决方案。GNU LGPL2.1 或更高版本,部分是 GNU GPL2.1 或更高版本。

  •GStreamer – 一个声音和可视化媒体的框架。GNU LGPL2.1。

  •lodepng – 一个简单的 PNG 图像解码器和编码器,不需要其他依赖。3-clause BSD.

  网络

  •asnlc – 一个把 ASN.1 规范转换为 C 代码的编译器。FreeBSD。

  •czmq – 一个 ZeroMQ 的高级绑定。

  •GNU adns – 一个高级,易用,异步的 DNS 客户端和实用工具。GNU GPL3 及更高版本。

  •GNU SASL – 一个简单身份认证和安全层和一些常见 SASL 机制的实现。GNU GPL3 及更高版本。

  •GnuTLS – 一个安全通信库,实现了 SSL,TLS 和 DTLS。GNU LGPL2.1 及更高版本。

  •gumbo-parser – 一个 C99 标准的 HTML5 解析库。Apache2.0。

  •http-parser – 一个 HTTP 请求回应解析器。Expat。

  •ldns – 一个简化 DNS 编程的库。3-clause BSD。

  •libcurl – 一个客户端的 URL 转换库,支持多种格式。curl license。

  •LibEtPan – 一个邮件库,支持 IMAP,SMTP,POP 和 NNTP 网络协议。3-clause BSD。

  •libev – 一个事件驱动库。FreeBSD.

  •libevent – 一个在网络服务器中事件驱动库的可替代品。3-clause BSD。

  •libgss – 通用安全服务。GNU GPL3 或更高版本。

  •libhttpd – 一个给应用或嵌入式设备添加基本 Web 服务器功能的库。GNU GPL2。

  •libidn – Stringprep,Punycode 和 IDNA 规范的实现。GNU GPL3 或更高版本。

  •libmicrohttpd – 一个迷你库,可作为其他应用的一部分,让运行 HTTP 服务器变得简单。GNU LGPL2.1 或更高版本。

  •libsoup – 一个 GNOME HTTP 客户端/服务器库,使用了 GObject。GNU LGPL2.1。

  •lwan – 一个实验性,可扩展,高性能的 HTTP 服务器。 GNU GPL2.1。

  •mongoose – 基于 C 的嵌入式 Web 服务器。GNU GPL2.1。

  •nanomsg – 一个基于 C 的 ZeroMQ 实现。Expat。

  •onion – 易于使用的 HTTP 服务器库。Apache2.0。

  •OpenSSL – 一个 SSL 和 TLS 协议的实现,还包括一个加密库。Dual Licensed under the OpenSSL License and the SSLeay License。

  •oSip – 一个基于 C 的 SIO 实现,没有额外的依赖。GNU LGPLv2.1 或更高版本。

  •s2n – 一个 C99 标准的 TLS/SSL 协议的实现,简单,快并且以安全优先。Apache2.0。

  •socket99 – BSD 套接字 API 的 C99 封装。ISC。

  •Tox – 一个通信平台,被设计为 Skype 杀手。GNU GPL3。

  •twitc – 一个与 Twitter OAuth API 交互的迷你 C 库。Expat。

  网络框架

  •balde – 一个基于 GLib 的 C 微框架。 GNU LGPLv2.1。

  数值计算

  •apophenia – 一个用于统计和科学计算的库。GNU GPL2.1。

  •ATLAS – 自动调谐线性代数软件。 3-clause BSD。

  •BLAS – Basic Linear Algebra Subprograms;提供向量和矩阵操作的一系列操作。BLAS license。

  •Cuba – 一个计算多维的数值积分的库。 GNU LGPLv3。

  •FFTW – The Fastest Fourier Transform in the West;一个高度优化的快速傅立叶变换例程。GNU GPL2.1 或更高版本。

  •FLINT – Fast Library for Number Theory;一个支持算数,多项式,幂级数和矩阵等。GNU GPL2.1 或更高版本。

  •GLPK – GNU Linear Programming Kit;一个求解大规模线性规划,混合整数规划和其他相关问题。GNU GPL3 或更高版本。

  •GMP – GNU Multple Precision Arithmetic Library;一个支持任意精度计算的库。双重许可 GNU GPL2.1 和 GNU LGPLv3。

  •GNU MPC – 一个支持复杂数字计算的库。GNU LGPL3 或更高版本。

  •GNU MPFR – 一个支持任意精度的浮点数计算库。GNU LGPL3 或更高版本(大多数最近版本),GNU LGPL2.1 或更高版本(2.4.x 之前)。

  •GNU MPRIA – 一个支持多精度合理区间运算的可扩展数学库。GNU GPL3 或更高版本。

  •GSL – The GNU Scientific Library;一个精确的数值计算库。GNU GPL3。

  •KISS FFT – 一个非常快的傅里叶变换库。3-clause BSD。

  •LAPACKE – 一个 LAPACK 的 C 接口。3-clause BSD。

  •PARI/GP – 一个数论的计算机代数系统,包括 C 编译器。GNU GPL2.1 或更高版本。

  •PETSc – 一系列数据结构和例程,用于计算由偏微分方程建模的应用程序的可扩展并行解。FreeBSD。

  •SLEPc – 一个在并行计算机中的解决大型,稀疏特征值问题的软件库。GNU LGPL3

  •Yeppp! – 非常快,SIMD 优化的数学库。 3-clause BSD。

  •

  并行编程

  •cchan – 一个线程间通信通道构建的小型库。公共领域。

  •ck – 并发原语,安全内存回收机制和非阻塞数据结构。FreeBSD。

  •mill – 用 C 写成的 Go 风格并发。X11

  •MPICH – MPI 的另一种实现。MPICH licence。

  •OpenMP – 一组 C 编译指令,使其易于并行化代码。标准(许可不适用)。

  •OpenMPI – 一个消息传输接口实现。3-clause BSD。

  •PETSc – 一系列数据结构和例程,用于计算由偏微分方程建模的应用程序的可扩展并行解。FreeBSD。

  •pth – 一个非抢占式优先级调度多线程执行的可扩展实现。GNU GPL3 或者更高版本。

  •pthreads – POSIX 线程库。标准(没有适用的许可)。

  •SLEPc – 一个在并行计算机中的解决大型,稀疏特征值问题的软件库。GNU LGPL3。

  •TinyCThread – 一个可扩展,小型的 C11 标准线程 API 实现。zlib。

  正则表达式

  有些人遇到问题时就会想:“啊,我知道了,我可以使用正则表达式”。于是现在他们有了两个问题。- Jamie Zawinski。

  •PCRE – 与 Perl 5 正则表达式完全相同的实现。3-clause BSD。

  •SLRE – Super Light Regular Expression library;一个 Perl 正则表达式语法子集的迷你实现。GNU GPL2.1。

  •TRE – 一个与 POSIX 一致,充满特色的正则表达式库。FreeBSD。

  序列化

  •c-capnproto – 一个 Cap’n Proto 序列化协议的实现。 Expat。

  •cmp – 一个 MessagePack 序列化协议的实现。 Expat。

  •libavro – 一个 Avro 数据序列化系统的 C 实现。Apache2.0。

  •mpack – 另一个 MessagePack 序列化协议的实现。Expat。

  •protobuf-c – 一个 Google Protocol Buffer 的 C 实现。FreeBSD。

  •xdr – External Data Representation;数据序列化标准。标准(没有可用许可)。

  源码集锦

  下面包含了一些小型源码集合。如果你想要大型且成熟的,看《框架》那一节。

  •CCAN – 模仿 Perl 的 CPAN,这是一个大的实用 C 代码集合。完整的列表在 这里。多种许可(所有都是免费软件)。

  •clib – 一个 C 软件包管理器,配备了一堆自己的库。 Expat。

  •gnulib – 通用 GNU 代码的集合。多种许可证,全部免费。

  •libdjb – 做各种事情的库的集合。(显然)公共领域。

  标准库

  下面包括了标准 C 库。

  •Bionic – 谷歌为 Android 开发的 C 标准库。3-clause BSD。

  •dietlibc – 标准 C 库,可能是最小的二进制文件。GNU GPL2.1。

  •glibc – GNU C 库。一个 C 标准库的实现。 GNU LGPL2.1。

  •musl – 标准 C 库,兼容 POSIX 2008 和 C11,为静态链接设计。Expat。

赞(5)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程