C 語言資源大全中文版

C 語言資源大全中文版

我想不少程序員應該記得 GitHub 上有一個 Awesome - XXX 系列的資源整理。awesome-c 是 koz.ross 發起維護的 C 語言資源列表,內容包括了:構建系統、編譯器、數據庫、加密、初中高的教程/指南、書籍、庫等等。php

Awesome 系列雖然挺全,但基本只對收錄的資源作了極爲簡要的介紹,若是有更詳細的中文介紹,對相應開發者的幫助會更大。這也是咱們發起這個開源項目的初衷。html


咱們要作什麼?


如何參與本項目?

從下面的目錄來看,本項目的工做量小不了,因此很是期待能有更多程序員一塊兒來參與。前端

不過加入前,有幾個小要求:node

  • 英文還不錯,能讀懂英文並用本身的話複述;
  • 在用 C 語言;

若有興趣,請加 QQ:50872495。加 Q 時請註明「C語言大全」。// 這不是 QQ 羣。android


本項目的參與者

注:名單不分排名,不按期補充更新git


目錄

構建系統

下面是一些 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

加密

數據庫

下面列出了基於 C API 的數據庫和數據存儲github

  • 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。web

環境

下面列出了被設計來引領 Windows 進入支持 C 的 21 世紀的技術。正則表達式

框架

這一節包括提供數據結構的大型庫和你所期待「現代」的標準庫。

  • 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 庫。公共領域。
  • libcstl:標準C語言通用數據結構和經常使用算法庫。官網

遊戲編程

引擎

這些做爲 C 遊戲編程代碼的例子。

資源

這些是篩選過的,對遊戲編程有用的庫。

  • Allegro - 一個跨平臺,視頻遊戲開發和多媒體庫。zlib
  • Chipmunk2D - 一個快且輕量級的 2D 遊戲物理庫。Expat
  • CSFML - 一個用 C 封裝的 SFMLzlib
  • FreeGLUT - 一個替代性的 OpenGL 實用工具包。容許用 OpenGL 上下文建立和管理窗口。X11
  • GLFW - 一個使用 OpenGL 上下文建立窗口的多平臺庫。zlib
  • libao - 一個有多種輸出的跨平臺音頻庫。GNU GPL2.1及更高版本。
  • RetroArch - libretro 的參考前端。GNU GPL3
  • SDL - 一個跨平臺庫,經過 OpenGL 提供音頻,鍵盤,鼠標,操縱桿和圖形硬件的底層訪問。zlib
  • SDL2- 一個跨平臺庫,經過 OpenGL 提供音頻,鍵盤,鼠標,操縱桿和圖形硬件的底層訪問。這是最新版本。zlib

通用編程

  • klib - 小且輕量級的經常使用算法和數據結構實現。Expat

圖形

GUI

這些具體來講就是控件工具包

JSON

  • Jansson - 一個編碼,解碼和處理 JSON 的 C 庫。Expat
  • jsmn - 一個極簡的 JSON 解析器。Expat
  • json-c - 一個處理 JSON 的庫。Expat
  • WJElement - 高級 JSON 處理庫,支持 JSON Schema。任意版本的 LGPL。
  • YAJL - 一個很快的 JSON 流解析 C 庫。ISC

學習、參考和指南

下面列出了學習 C 編程的資源,或者跟 C 編程相關的有用的東西。

在線

參考

初級

中級

高級

自學教程

實體書

參考資料

初級

中級

高級

多媒體

  • FFMPEG - 一個完整,跨平臺的錄音,轉換和流化視頻以及音頻的解決方案。GNU LGPL2.1 或更高版本,部分是 GNU GPL2.1 或更高版本。
  • GStreamer - 一個聲音和可視化媒體的框架。GNU LGPL2.1
  • lodepng - 一個簡單的 PNG 圖像解碼器和編碼器,不須要其餘依賴。3-clause BSD.

網絡編程

Web框架

數值計算

  • 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。

序列化

源碼集錦

下面包含了一些小型源碼集合。若是你想要大型且成熟的,看《框架》那一節。

  • CCAN - 模仿 Perl 的 CPAN,這是一個大的實用 C 代碼集合。完整的列表在 這裏。多種許可(全部都是免費軟件)。
  • clib - 一個 C 軟件包管理器,配備了一堆本身的庫。 Expat
  • gnulib - 通用 GNU 代碼的集合。多種許可證,所有免費。
  • libdjb - 作各類事情的庫的集合。(顯然)公共領域。

標準庫

下面包括了標準 C 庫。

字符串處理

測試工具

文本編輯器擴展

在幾乎任何像樣的文本編輯器支持 C 之際,有一些擴展,讓編輯器更加使人愉快。下面是根據編輯器分目錄的。

Emacs

  • CEDET - Collection of Emacs Development Environment Tools;給 Emacs 提供一種相似 IDE 的特色,是內建的。GNU GPL3 或更高版本。
  • Flycheck - 現代語法檢查。對於 C,它可使用 GCC 或者 Clang 做爲後端。GNU GPL3 或更高版本。
  • Yasnippet - 一個模板系統,支持 C 的通用代碼片斷。GNU GPL3 或更高版本。

Vim

工具

下面是實用的程序列表,包括了幫助你編寫和調試 C 代碼的庫或者編譯器,不包括編輯器。

  • adlint - 一個靜態分析器。支持徹底的 C89 標準和部分 C99 標準。GNU GPL3 或更高版本。
  • Artistic Style - 一個支持 C 的小而快的自動化代碼格式化工具。GNU LGPL3
  • address-sanitizer - 一個很快的內存錯誤探測器。Apache2.0
  • biicode - 一個現代的 C 依賴管理器。Expat
  • c - 在命令行中編譯和執行 C 腳本,也支持 shebang。 Expat
  • c99sh - 用 hash-bang 運行 C 文件。FreeBSD
  • CBMC - C Bounded Model Checker;一個檢查數組邊界,指針安全和用戶自定義斷言的工具。Original BSD
  • cdecl - 一個在線服務,可以把 C 的聲明翻譯成英文,反向也能夠。公共領域。
  • cinclude2dot - 在 C 項目中使用 Graphviz 的圖像包含依賴。任意的 GNU GPL 版本(根據文件中的要求)
  • Complexity - 一個測量 C 代碼複雜性的工具。GNU GPL3 或更高版本。
  • DDD - 各類命令行調試器的圖形前端。GNU GPL3 或更高版本。
  • fab - 讓每次構建都最優的構建系統。GNU GPL3
  • GDB - The GNU Project debugger;一個 C 調試器。GNU GPL3 或更高版本。
  • Glade - 一個讓 TK+ GUIs 開發更快的 RAD 工具。GNU GPL2.1
  • GMSL - GNU Make Standard Library;一個 GNU Make 額外功能的集合。3-clause BSD
  • GNU Global - 一個 C 的源碼標籤工具。GNU GPL3
  • gprof - 一個性能分析工具。GNU binutils 的一部分。GNU GPL3 或更高版本。
  • Highlight - 把源碼轉化爲高亮的格式化文本。GNU GPL3
  • include-what-you-use - 幫助程序員發現沒必要要的包含和提供解決他們的建議。基於 LLVM/Clang(只能與它一塊兒工做)。NCSA
  • indent - 自動格式化 C 代碼,讓它更容易閱讀。也能把一種風格的代碼轉化爲另外一種。GNU GPL3 或更高版本。
  • Make - 一個控制程序的可執行和其餘非代碼文件的生成的工具。GNU GPL3 或更高版本(連接到 GNU 的實現)。
  • qo - 無需分開的配置文件的構建系統。Expat
  • rr - 記錄非肯定執行來容許可肯定調試的調試器。FreeBSD
  • tup - 一個很快,基於文件,跨平臺的構建系統。GNU GPL2.1
  • unifdef - 移除 #ifdef 和 #if 指令包含的文本,不會改變文件的其餘部分。3-clause BSD 和 FreeBSD
  • Valgrind - 各類動態分析工具,包括一個內存泄漏檢測工具。GNU GPL2.1

其餘工具

下面是一應俱全的目錄,主要是那些不適合放在其餘目錄的東西。

XML

「XML 是垃圾。真的,沒有任何藉口。XML 對人類不友好的,甚至對於電腦來講也是一場災難。根本就沒有這個可怕的垃圾存在的理由」 -Linus Torvalds

其餘資源

有影響力的書

具備普遍影響且值得閱讀的 C 語言經典書籍。

  • 待補充

知名網站/博客

值得關注的 C 語言技術站點和博客。

中文

  • 待補充

英文

  • 待補充

微信公衆號

  • CPP開發者:專一分享 C/C++ 開發相關的技術文章和工具資源。 

https://github.com/bajdcc/awesome-c-cn

相關文章
相關標籤/搜索