維護的一個 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。
因字數限制,還有一部分內容在下一篇帖子上發布,感興趣的朋友可以關注我的帖子!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84627.html
標籤:基礎類
上一篇:0x0012d785 處未處理的例外: 0xC0000005:
下一篇:C語言資源大全
