Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個并發連接去測試網站的負載能力。Webbench使用C語言編寫, 代碼實在太簡潔,源碼加起來不到600行。
下載鏈接:http://home.tiscali.cz/~cz210552/webbench.html
tinyhttpd是一個超輕量型Http Server,使用C語言開發,全部代碼只有502行(包括注釋),附帶一個簡單的Client,可以通過閱讀這段代碼理解一個 Http Server 的本質。
下載鏈接:http://sourceforge.net/PRojects/tinyhttpd/
cJSON是C語言中的一個JSON編解碼器,非常輕量級,C文件只有500多行,速度也非常理想。
cJSON也存在幾個弱點,雖然功能不是非常強大,但cJSON的小身板和速度是最值得贊賞的。其代碼被非常好地維護著,結構也簡單易懂,可以作為一個非常好的C語言項目進行學習。
項目主頁:http://sourceforge.net/projects/cjson/
cmockery是google發布的用于C單元測試的一個輕量級的框架。它很小巧,對其他開源包沒有依賴,對被測試代碼侵入性小。cmockery的源代碼行數不到3K,你閱讀一下will_return和mock的源代碼就一目了然了。
主要特點:
免費且開源,google提供技術支持;輕量級的框架,使測試更加快速簡單;避免使用復雜的編譯器特性,對老版本的編譯器來講,兼容性好;并不強制要求待測代碼必須依賴C99標準,這一特性對許多嵌入式系統的開發很有用下載鏈接:http://code.google.com/p/cmockery/downloads/list
libev是一個開源的事件驅動庫,基于epoll,kqueue等OS提供的基礎設施。其以高效出名,它可以將IO事件,定時器,和信號統一起來,統一放在事件處理這一套框架下處理。基于Reactor模式,效率較高,并且代碼精簡(4.15版本8000多行),是學習事件驅動編程的很好的資源。
下載鏈接:http://software.schmorp.de/pkg/libev.html
Memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態數據庫驅動網站的速度。Memcached 基于一個存儲鍵/值對的 hashmap。Memcached-1.4.7的代碼量還是可以接受的,只有10K行左右。
下載地址:http://memcached.org/
Lua很棒,Lua是巴西人發明的,這些都令我不爽,但是還不至于臉紅,最多眼紅。
讓我臉紅的是Lua的源代碼,百分之一百的ANSI C,一點都不摻雜。在任何支持ANSI C編譯器的平臺上都可以輕松編譯通過。我試過,真是一點廢話都沒有。Lua的代碼數量足夠小,5.1.4僅僅1.5W行,去掉空白行和注釋估計能到1W行。
下載地址:http://www.lua.org/
SQLite是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。 其特點是高度便攜、使用方便、結構緊湊、高效、可靠。足夠小,大致3萬行C代碼,250K。
下載地址:http://www.sqlite.org/ 。
UNIX V6 的內核源代碼包括設備驅動程序在內 約有1 萬行,這個數量的源代碼,初學者是能夠充分理解的。有一種說法是一個人所能理解的代碼量上限為1 萬行,UNIX V6的內核源代碼從數量上看正好在這個范圍之內。看到這里,大家是不是也有“如果只有1萬行的話沒準兒我也能學會”的想法呢?
另一方面,最近的操作系統,例如Linux 最新版的內核源代碼據說超過了1000 萬行。就算不是初學者,想完全理解全部代碼基本上也是不可能的。
下載地址:http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6
NetBSD是一個免費的,具有高度移植性的 UNIX-like 操作系統,是現行可移植平臺最多的操作系統,可以在許多平臺上執行,從 64bit alpha 服務器到手持設備和嵌入式設備。NetBSD計劃的口號是:”Of course it runs NetBSD”。它設計簡潔,代碼規范,擁有眾多先進特性,使得它在業界和學術界廣受好評。由于簡潔的設計和先進的特征,使得它在生產和研究方面,都有卓越的表現,而且它也有受使用者支持的完整的源代碼。許多程序都可以很容易地通過NetBSD Packages Collection獲得。
下載地址:http://www.netbsd.org/
關于 C++ 框架、庫和資源的一些匯總列表,內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日志、代碼分析等。
C++標準庫,包括了STL容器,算法和函數等。
C++ Standard Library:是一系列類和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分。Standard Template Library:標準模板庫C POSIX library : POSIX系統的C標準庫規范ISO C++ Standards Committee :C++標準委員會
C++通用框架和庫
Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本組件的集合ASL :Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。Boost :大量通用C++庫的集合。BDE :來自于彭博資訊實驗室的開發環境。Cinder:提供專業品質創造性編碼的開源開發社區。Cxxomfort:輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。Dlib:使用契約式編程和現代C++科技設計的通用的跨平臺的C++庫。EASTL :EA-STL公共部分ffead-cpp :企業應用程序開發框架Folly:由Facebook開發和使用的開源C++庫JUCE :包羅萬象的C++類庫,用于開發跨平臺軟件libPhenom:用于構建高性能和高度可擴展性系統的事件框架。LibSourcey :用于實時的視頻流和高性能網絡應用程序的C++11 evented IOLibU : C語言寫的多平臺工具庫Loki :C++庫的設計,包括常見的設計模式和習語的實現。MiLi :只含頭文件的小型C++庫openFrameworks :開發C++工具包,用于創意性編碼。Qt :跨平臺的應用程序和用戶界面框架Reason :跨平臺的框架,使開發者能夠更容易地使用java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。ROOT :具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。STLport:是STL具有代表性的版本STXXL:用于額外的大型數據集的標準模板庫。Ultimate++ :C++跨平臺快速應用程序開發框架Windows Template Library:用于開發Windows應用程序和UI組件的C++庫Yomm11 :C++11的開放multi-methods.
音頻,聲音,音樂,數字化音樂庫
FMOD :易于使用的跨平臺的音頻引擎和音頻內容的游戲創作工具。Maximilian :C++音頻和音樂數字信號處理庫OpenAL :開源音頻庫—跨平臺的音頻APIOpus:一個完全開放的,免版稅的,高度通用的音頻編解碼器Speex:免費編解碼器,為Opus所廢棄Tonic: C++易用和高效的音頻合成Vorbis: Ogg Vorbis是一種完全開放的,非專有的,免版稅的通用壓縮音頻格式。
生物信息,基因組學和生物技術
libsequence:用于表示和分析群體遺傳學數據的C++庫。SeqAn:專注于生物數據序列分析的算法和數據結構。Vcflib :用于解析和處理VCF文件的C++庫Wham:直接把聯想測試應用到BAM文件的基因結構變異。
壓縮和歸檔庫
bzip2:一個完全免費,免費專利和高質量的數據壓縮doboz:能夠快速解壓縮的壓縮庫PhysicsFS:對各種歸檔提供抽象訪問的庫,主要用于視頻游戲,設計靈感部分來自于Quake3的文件子系統。KArchive:用于創建,讀寫和操作文件檔案(例如zip和 tar)的庫,它通過QIODevice的一系列子類,使用gzip格式,提供了透明的壓縮和解壓縮的數據。LZ4 :非常快速的壓縮算法LZHAM :無損壓縮數據庫,壓縮比率跟LZMA接近,但是解壓縮速度卻要快得多。LZMA :7z格式默認和通用的壓縮方法。LZMAT :及其快速的實時無損數據壓縮庫miniz:單一的C源文件,緊縮/膨脹壓縮庫,使用zlib兼容API,ZIP歸檔讀寫,PNG寫方式。Minizip:Zlib最新bug修復,支持PKWARE磁盤跨越,AES加密和IO緩沖。Snappy :快速壓縮和解壓縮ZLib :非常緊湊的數據流壓縮庫ZZIPlib:提供ZIP歸檔的讀權限。
并發執行和多線程
Boost.Compute :用于OpenCL的C++GPU計算庫Bolt :針對GPU進行優化的C++模板庫C++React :用于C++11的反應性編程庫Intel TBB :Intel線程構件塊Libclsph:基于OpenCL的GPU加速SPH流體仿真庫OpenCL :并行編程的異構系統的開放標準OpenMP:OpenMP APIThrust :類似于C++標準模板庫的并行算法庫HPX :用于任何規模的并行和分布式應用程序的通用C++運行時系統VexCL :用于OpenCL/CUDA 的C++向量表達式模板庫。
數據庫,SQL服務器,ODBC驅動程序和工具
hiberlite :用于Sqlite3的C++對象關系映射Hiredis: 用于Redis數據庫的很簡單的C客戶端庫LevelDB: 快速鍵值存儲庫LMDB:符合數據庫四大基本元素的嵌入鍵值存儲MySQL++:封裝了MySql的C API的C++ 包裝器RocksDB:來自Facebook的嵌入鍵值的快速存儲SQLite:一個完全嵌入式的,功能齊全的關系數據庫,只有幾百KB,可以正確包含到你的項目中。
調試庫, 內存和資源泄露檢測,單元測試
Boost.Test:Boost測試庫Catch:一個很時尚的,C++原生的框架,只包含頭文件,用于單元測試,測試驅動開發和行為驅動開發。CppUnit:由JUnit移植過來的C++測試框架CTest:CMake測試驅動程序googletest:谷歌C++測試框架ig-debugheap:用于跟蹤內存錯誤的多平臺調試堆libtap:用C語言編寫測試MemTrack —用于C++跟蹤內存分配microprofile- 跨平臺的網絡試圖分析器minUnit :使用C寫的迷你單元測試框架,只使用了兩個宏Remotery:用于web視圖的單一C文件分析器UnitTest++:輕量級的C++單元測試框架
動力學仿真引擎
Box2D:2D的游戲物理引擎。Bullet :3D的游戲物理引擎。Chipmunk :快速,輕量級的2D游戲物理庫LiquidFun:2D的游戲物理引擎ODE :開放動力學引擎-開源,高性能庫,模擬剛體動力學。ofxBox2d:Box2D開源框架包裝器。Simbody :高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。
XML就是個垃圾,xml的解析很煩人,對于計算機它也是個災難。這種糟糕的東西完全沒有存在的理由了。-Linus Torvalds
Expat :用C語言編寫的xml解析庫Libxml2 :Gnome的xml C解析器和工具包libxml++ :C++的xml解析器PugiXML :用于C++的,支持XPath的輕量級,簡單快速的XML解析器。RapidXml :試圖創建最快速的XML解析器,同時保持易用性,可移植性和合理的W3C兼容性。TinyXML :簡單小型的C++XML解析器,可以很容易地集成到其它項目中。TinyXML2:簡單快速的C++CML解析器,可以很容易集成到其它項目中。TinyXML++:TinyXML的一個全新的接口,使用了C++的許多許多優勢,模板,異常和更好的異常處理。Xerces-C++ :用可移植的C++的子集編寫的XML驗證解析器。
一些有用的庫或者工具,但是不適合上面的分類,或者還沒有分類。
C++ Format :C++的小型,安全和快速格式化庫casacore :從aips++ 派生的一系列C++核心庫cxx-prettyprint:用于C++容器的打印庫DynaPDF :易于使用的PDF生成庫gcc-poison :幫助開發人員禁止應用程序中的不安全的C/C++函數的簡單的頭文件。googlemock:編寫和使用C++模擬類的庫HTTP Parser :C的http請求/響應解析器libcpuid :用于x86 CPU檢測盒特征提取的小型C庫libevil :許可證管理器libusb:允許移動訪問USB設備的通用USB庫PCRE:正則表達式C庫,靈感來自于Perl中正則表達式的功能。Remote Call Framework :C++的進程間通信框架。Scintilla :開源的代碼編輯控件Serial Communication Library :C++語言編寫的跨平臺,串口庫。SDS:C的簡單動態字符串庫SLDR :超輕的DNS解析器SLRE: 超輕的正則表達式庫Stage :移動機器人模擬器VarTypes:C++/Qt4功能豐富,面向對象的管理變量的框架。ZBar:‘條形碼掃描器’庫,可以掃描照片,圖片和視頻流中的條形碼,并返回結果。PHP-CPP:使用C++來構建PHP擴展的庫Better String :C的另一個字符串庫,功能更豐富,但是沒有緩沖溢出問題,還包含了一個C++包裝器。
用于創建開發環境的軟件
C/C++編譯器列表
Clang :由蘋果公司開發的GCC:GNU編譯器集合Intel C++ Compiler :由英特爾公司開發LLVM :模塊化和可重用編譯器和工具鏈技術的集合Microsoft Visual C++ :MSVC,由微軟公司開發Open WatCom :Watcom,C,C++和Fortran交叉編譯器和工具TCC :輕量級的C語言編譯器
在線C/C++編譯器列表
codepad :在線編譯器/解釋器,一個簡單的協作工具CodeTwist:一個簡單的在線編譯器/解釋器,你可以粘貼的C,C++或者Java代碼,在線執行并查看結果coliru :在線編譯器/shell, 支持各種C++編譯器Compiler Explorer:交互式編譯器,可以進行匯編輸出CompileOnline:Linux上在線編譯和執行C++程序Ideone :一個在線編譯器和調試工具,允許你在線編譯源代碼并執行,支持60多種編程語言。
C/C++調試器列表
Comparison of debuggers :來自維基百科的調試器列表GDB :GNU調試器Valgrind:內存調試,內存泄露檢測,性能分析工具。
C/C++集成開發環境列表
AppCode :構建與JetBrains’ IntelliJ IDEA 平臺上的用于Objective-C,C,C++,Java和Java開發的集成開發環境CLion:來自JetBrains的跨平臺的C/C++的集成開發環境Code::Blocks :免費C,C++和Fortran的集成開發環境CodeLite :另一個跨平臺的免費的C/C++集成開發環境Dev-C++:可移植的C/C++/C++11集成開發環境Eclipse CDT:基于Eclipse平臺的功能齊全的C和C++集成開發環境Geany :輕量級的快速,跨平臺的集成開發環境。IBM VisualAge :來自IBM的家庭計算機集成開發環境。Irony-mode:由libclang驅動的用于Emacs的C/C++微模式KDevelop:免費開源集成開發環境Microsoft Visual Studio :來自微軟的集成開發環境NetBeans :主要用于Java開發的的集成開發環境,也支持其他語言,尤其是PHP,C/C++和HTML5。Qt Creator:跨平臺的C++,Javascript和QML集成開發環境,也是Qt SDK的一部分。rtags:C/C++的客戶端服務器索引,用于 跟基于clang的emacs的集成Xcode :由蘋果公司開發YouCompleteMe:一個用于Vim的根據你敲的代碼快速模糊搜索并進行代碼補全的引擎。
提高質量,減少瑕疵的代碼分析工具列表
Cppcheck :靜態C/C++代碼分析工具include-what-you-use :使用clang進行代碼分析的工具,可以#include在C和C++文件中。OCLint :用于C,C++和Objective-C的靜態源代碼分析工具,用于提高質量,減少瑕疵。Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代碼分析工具List of tools for static code analysis :來自維基百科的靜態代碼分析工具列表新聞熱點
疑難解答
圖片精選