C++開源庫

 引言

  C++在「商業應用」方面,曾經是天下第一的開發語言,但這一桂冠已經被java搶走多年。由於當今商業應用程序類型,已經從桌面應用迅速轉移成Web應用。當Java橫行天下以後,MS又忽然發力,搞出C#語言,有大片的曾經的C++程序員,覺得C++要就此沉淪,未料,這三年來,C++的生命力忽然被嚴重地加強了。主力緣由就是開源的軟件、基礎軟件(好比並發原生支持,好比Android一定要推出原生的SDK)、各類跨平臺應用的出現。開源C++庫必須具備如下特色:必須是成熟的產品、跨平臺的產品、相對通用的庫。

1、通用標準類

   STL:C++標準模板庫php

   boost:C++準標準庫,它是強大地,江湖稱之「千錘百煉」。-------若掌握,必橫行世界。html

   deelx (輕量級的正則表達式解析類庫,國產),boost裏有強大的正則表達式解析庫,但若是你只想要一個表達式解析,不想要拖上龐大的boost庫時……支持一下國貨。java

   iconv /iconvpp : C形式的編碼轉換函數庫node

 

2、XML解析庫

   C++的XML相關庫很多,可是大部分其實都是C庫,使用起來天然不那麼輕便。其中基於DOM的有TinyXml,基於SAX的固然是Xerces。前者小巧快捷,便於使用,適合作數據交換。後者則是全功能的XML解析器。python

   xerces-c :最強大的XML解析庫了,不是僅僅在開源庫裏,你儘管把商業的算在內。固然,它的變體,被IBM拿去賣錢的那個版本,多了數百兆的東東來支持各國編碼轉換,是更強大,但我以爲有小小的,開源的iconv在前不就夠了?mysql

   

   對三個輕型xml解析開源庫:SlimXmlTinyXmlRapidXml,對好比下:react

解析這個3.3萬行,1.5M大小的xml,三個庫分別花了linux

  • SlimXml: 22ms
  • TinyXml: 54ms
  • RapidXml: 4ms!

結論是,RapidXml果真很強悍,竟然比SlimXml快5倍多。c++

     比較欣慰的是,在沒有很關注效率的狀況下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是簡單小巧路線,源代碼只有 32k,而TinyXml和RapidXml的源碼分別是147k和141k,有這樣的效率能夠滿意了。由於這個庫主要仍是針對幾十上百行的小文件,解析特別大的xml不在我考慮的範圍以內。git

 

     還有irrlicht(鬼火引擎)的irrXMl解析器。

     xsd (XML 與 C++數據結構的綁定工具)。(商業使用要錢)


3、數據庫

   我比較喜歡OTL(用於鏈接數據庫)。

  

4、多媒體類

   SDL (Simple DirectMedia Layer/多媒體直接訪問層,用於遊戲編程)。

   相應的c開源庫有ffmpeg、mpeg四、aac、avc、libmad、mpeg一、flac、ac三、ac三、matroska著名的多媒體播放器 TCPMP 天下聞名的跨平臺、嵌入式手持設備視頻播放器,

 

5、網絡開發類

   一、gSOAP SOAP協議的C++支持庫及代碼生成工具。

   二、ACE  網絡編程研究首選

       ACE適合於研究,大型網絡編程上效率不足,大型網遊裏面幾乎沒有用到ACE的,不少用了ACE的項目也被證實了效率不高

       除了ACE以外,還有不少系統和網絡編程方面的程序庫。好比在線程庫方面,還有ZThread、boost::thread,若是放大到C/C++領域, 還有APR,還有CII。在文件和目錄操做方面,boost也有相應的組件,而在網絡編程方面有socket++,還有boost::asio,將來的 C++0X中幾乎確定有一個網絡編程和一個線程庫。然而目前看來,ACE仍然是進行系統和高性能網絡編程的首選,其地位在一段時間內不會被撼動。它不可是 一個實用的程序庫、框架集,仍是一個典範的設計模式應用範例,很是值得學習。

    三、有博友回覆到POCO。我整理以下:

      開源C++庫,稱爲POCO(POrtable COmponents – 可移植元件),很是方便好用。

      特性:

         * 線程,程序同步及多線程編程高級抽象
         * 流及文件系統訪問
         * 共享庫將類加載
         * 功能強大的日誌和錯誤報告
         * 安全及加密
         * 網絡編程 (TCP/IP 套接字, HTTP客戶端和HTTP服務器, FTP, SMTP, POP3, 等)
         * XML解析 (SAX2 和 DOM) 及生成
         * 配置文件及選項處理
         * SQL數據庫訪問(ODBC, MySQL, SQLite)

     能夠運行的平臺包括:

        * Windows
        * Mac OS X
        * iPhone OS
        * (embedded) Linux
        * HP-UX
        * Tru64
        * Solaris
        * QNX


6、GUI庫

   BCG Windows平臺下界面設計的第三方庫,可讓你的界面更美好,更具時代感。

   wxWidgets :使用wxWidgets ,開發者能夠基於同一套代碼,爲Win32, Mac OS X, GTK+, X11, Motif, WinCE等平臺開發應用程序。wxWidgets庫能夠被C++, Python, Perl, and C#/.NET等開發語言使用。跟其它有些一樣支持跨平臺GUI開發工具不一樣,基於wxWidgets的應用,擁有真實本地化的視覺及使用效果——由於,wxWidgets使用(各)平臺原生的控件,而不是簡單經過貼圖去模擬。wxWidgets是使用普遍的,自由的,開源的,成熟的。

   QT------界面(GUI)開發,支持C++/Java/Python/...多種語言。跨平臺。最主要的好處是,API很是優美!Qt自己也不只僅只是作GUI編程,實際它基本上能夠作OS-API能夠作的任何事情。象網絡/數據庫/OpenGL/...都提供完美的支持。傳統上Qt被認爲是可移植的GUI庫,但實際上Qt如今已是一個比較完整的可移植應用程序框架了,其中包含了大量的工具,好比正則表達式、Web和 Socket類、2D和3D圖形、XML解析、SQL類等,甚至還包括了一個完整的容器類庫,不過其王牌仍是GUI。在目前的跨平臺GUI框架中,Qt成熟度最高,已經被一些大公司應用在關鍵產品中。因爲Trolltech對Qt採用的dual license模式,該產品既能夠從開源社區得到支持,又可以賺取足夠的商業利潤,所以其前景也使人比較有信心。Qt的主要技術特點是其元對象模型。Qt實際上使用的並非標準的C++,而是標準C++的一個擴展。它經過元對象模型擴展,實現了著名的signal/slot機制,而這一機制也成爲Qt的最大特點和優點。

 與Qt相似的可移植GUI框架還有wxWidget、FOX


六. 計算機視覺

OpenCV,因特爾自主的開源庫。支持C/C++/Python接口。這個感興趣的朋友能夠玩一下。若是結合OpenCV,你能夠作一些外行人以爲很酷的程序。好比說用它的人臉識別函數,來對你的攝像頭進行處理,判斷人的動做等


七. 圖形圖像處理

   GDAL處理大圖像。要是GIS專業的人確定會語言到很是大的tif影像,動則幾個GB的航空影像。GDAL對大圖像的讀寫支持是很是棒的(像多波段的圖像均可以搞定)。  支持C++/Java/Python...

國外開源的GIS軟件QGIS就是用了gdal

   C的圖形圖像庫較多,libjpeg、libpng、zlib、tiff、JBIG、最著名的開源形圖像處理軟件Cximage


8、內存管理

    boost::smart_ptr,Hans-Boehm GC
    C/C++的內存管理是一個永恆的話題。通常來講,C++的開發者傾向於本身管理內存。然而,出乎不少C++開發者意料的是,近期C++的一些領袖人物已經公開宣稱,若是不配備自動內存管理機制,用C++編寫安全可靠的大型程序是很是困難的。而Bjarne Stroustrup也曾對中國開發者建議,若是沒有特別的理由,應該在大型項目中使用自動內存管理工具。所以,今天的C++開發者應當積極地學習和應用自動內存管理設施。
    說到自動內存管理,比較輕量級的作法是boost::smart_ptr,而激進的作法是引入完整的GC機制。目前開源而又比較可靠的GC中,Hans- Boehm GC無疑是最受信賴的。做爲一個保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特別是,使用這個GC,你仍然能夠delete、free來本身管理內存,對於咱們編程習慣的衝擊比較小。


9、密碼及安全

    OpenSSL
 
   安全是今天進行C/C++編程沒法迴避和必須重視的問題。然而編寫安全的應用程序,特別是跟網絡相關的C/C++應用程序,是一件十分困難的事情。能夠 說,整個業界目前在這個進程上仍然處於「初級階段」。特別是涉及到大量的安全、密碼學相關的算法、規範,若是讓開發者本身摸索,其工做量和難度達到了不現實的程度。所以必須藉助可靠的相關程序庫纔有可能提升程序的安全性。在這方面,OpenSSL是目前最好的選擇,其內容之全面可靠,已經成爲業界標杆。然 而,因爲安全編程固有的複雜性,即便使用penSSL,開發工做仍然是很是繁瑣的。所以咱們也但願可以儘快看到更簡單、更易用的C/C++安全程序庫。


10、矩陣計算

    MTL
   
 自1995年以來,C++在科學計算領域當中取得了巨大的突破。這主要歸功於template技術的高級應用,使得C++在科學計算的性能方面取得了巨大的進步,一大批優秀的C++科學計算庫涌現出來。好比Blitz++、POOMA、MTL、Boost::uBLAS。而這其中,MTL就功能豐富程度、 性能、開發支持和成熟程度來說,是比較突出的一個,所以能夠優先考慮。值得一提的是,2002年,MTL與後來被Intel收購的KAI C++配合,曾經在性能評測中擊敗了FORTRAN。


11、中間件

  一、分佈式對象中間件:ICE
   
  ICE是分佈式對象中間件領域裏的後起之秀,能夠大體地將其視爲「改進版」的CORBA。目前應用在一些大型項目當中,其中包括波音公司主持的下一代陸軍做戰系統。
     ICE的一個特別價值是其代碼的範例意義。因爲ICE的出現較晚,開發者比較系統地應用了新的C++編程風格,因此成爲了研讀C++代碼的良好目標。

  二、消息中間件:ZeroMQ,總結的幾種特性以下:

     1) 消息系統中,它差很少是最簡潔的,只是個簡潔的API,有n多種語言的綁定,沒有專門的服務器; 
     2) 性能很是優越,遠遠高於RabbitMQ、ActiveMQ、MSMQ等; 
     3) 適合作分佈式和併發應用。


12、正則表達式

    boost::regex
   
 正則表達式是編程工做中最強有力的工具之一。C++的正則表達式支持一直以來是一個軟肋。大約在2001年左右,boost中出現了regex庫,初步解決了這個問題。可是最初的regex不管在效率上仍是可靠性方面都有一些問題,後來通過一次大規模的翻修以後,達到了比較完善的程度。
    其餘能夠選擇的替代品還有C語言的pcre庫,Qt中的QRegExp類等


十3、配置管理

    Lua
   
 隨着軟件系統愈來愈複雜,對軟件的可配置型提出了愈來愈高的要求。傳統上只要經過命令行參數來配置的系統,如今可能須要愈來愈多的方式和機制。目前愈來愈受歡迎、而且獲得愈來愈多證明的作法,是將Lua嵌入到C/C++程序中,而用Lua程序做爲配置腳本。這種作法的優點是,Lua語言強大靈活,能夠適應 複雜的配置要求。同時,Lua便於嵌入C/C++程序,並且編譯執行速度很是快,能夠說是目前解決C/C++程序配置管理問題的一個出色方案。


十4、3D遊戲引擎

   1. Irrlicht    http://irrlicht.sourceforge.net/

    始於2003,次年即被評爲最佳開源遊戲引擎。官方支持C++和.Net,拓展語言綁定包含java,perl,ruby,python.跨平臺支持,使用D3D,OpenGL以及自帶API.

   優勢:容易上手;跨平臺;自帶XML解析器;大的社區;

   缺點:最近開發慢下來了

 

   2. Panda3D  http://www.panda3d.org/

    由迪斯尼開發,卡耐基-梅隆娛娛樂科技中心支持。Python是官方推薦語言。也支持C++。

    優勢:有用的社區;大量功能;按期開發;

    缺點:缺少工具支持;極差的文檔;


   3. OGRE http://www.ogre3d.org/

    圖像引擎中最好的一個。2000年立的項。推薦使用C++語言。須要很是熟悉編程才行。初學者不宜。

    優勢:大量功能;優異的文檔;大規模的社區;活躍的開發

    缺點:不適合初哥;只有圖像引擎


  4. Crystal Space http://www.crystalspace3d.org/main/Main_Page

   1997年發行,用C++編寫的開源遊戲引擎。推薦使用C++

   優勢:不錯的社區支持;大量功能;

   缺點:難學;


  五、Delta3d   http://www.delta3d.org/index.php

   Delta3D是一款由美國海軍研究學院(Naval Postgraduate School)開發的全功能遊戲與仿真引擎,獲得美國軍方巨大的支持與豐厚的投資。該引擎應用領域極爲普遍,如開發在培訓、教育、娛樂行業和科學計算可視化領域等方面建模與仿真的軟件。它的標準化設計把一些知名開源軟件和引擎如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), 還有 OpenAL融爲一體。Delta3D經過對這些底層模塊進行隱藏封裝,整合在一塊兒從而造成了一個使用更加方便的高級API 函數庫,使得開發者在必要的時候可以使用底層函數進行二次開發。Delta3D在軟件系列中,處於中間層(Middle layer)的位置上。

  優勢:適合各類3D遊戲,仿真,很全面。一直在作更新。

  缺點:參考資料比較少。中文文檔也比較少。官方參考資料比較少。可是讀源代碼能夠加快理解,應用。


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

補充:

   剛纔普及了一下,sqlite 是輕型的數據庫,用c開發的,不在此以內。

   ACE,大型網絡編程的首選庫,這個有點問題,改成網絡編程研究首選比較合適,呵呵。
   ACE適合於研究,大型網絡編程上效率不足,大型網遊裏面幾乎沒有用到ACE的,不少用了ACE的項目也被證實了效率不高。

   我一直用boost::asio,效率基本夠用,在windows上跟你裸寫iocp差很少。通常的網絡開發,直接boost就好了。

   Qt已經不是單純的GUI庫了,它已經發展成了一個綜合性的跨平臺開發利器。

   Boost雖然功能也很強大,但它是一個鬆散的集合,不成體系。而Qt像Java和.NET同樣,可又稱之爲「開發平臺」。而且Qt背後有Nokia的強大支持。使用Qt開發,不多須要藉助其它類庫。

  
 在C++領域,Qt已是不二選擇。

   VS2010開始有std::regex了。

   我也是作遊戲的,在此就不得不提一下Ogre 和 CEGUI 了,呵呵

   確實如此,我也準備用CEGUI來作遊戲界面。地圖編輯器就得用QT了。

   現階段,C++ 使用人數忽然多起來,主要是由於移動開發這一塊,移動設備的 CPU、內存相對來講,跑不動那些動輒須要幾十兆上百兆的虛擬機之上的 Java/C# 程序,或者說跑起來不那麼流暢。不過,隨着移動設備的 CPU、內存在性能/容量的提高,很快就能夠在移動設備上跑 Java/C# 了。Windows 8 號稱支持移動設備,估計推出後 C# 會更進一步,C++ 則退一步。
   
    遊戲開發偶不熟悉。不過 C++ 語法過於複雜,ANSI C++ 標準庫東西太少,缺多線程、GUI、網絡等最基本的庫。整體來講,C++ 不適合開發大型項目。舉個最簡單的例子 log4j/log4cxx:文件日誌是不少地方都須要的,裏面用到的技術包括:文件操做、可用於多進程環境的隊列類、信號鎖。當 log4j 在 java 項目中幾乎普及的時候,log4cxx 卻由於內存泄露問題遲遲不能解決乾淨,致使如今幾乎無人使用。在 java/c# 對經常使用的隊列、map、string 都有單線程、多線程兩個版本的時候,C++ 只有單線程版本;c++ 標準庫及其小,連日期類操做都沒有,只能藉助於 c 函數;至於數據庫、xml、網絡、GUI 庫,在 c++ 標準庫中都沒有。
   雖然說開源庫一大堆,可是,涉及到了解、評估、挑選這幾個環節,時間上又不容許:有幾我的有機會/有能力瞭解三個 C++ XML 類庫、三個 C++ 網絡庫並對其評個高下、並在必定的時間內選出適合本身用的庫? 至於 ACE, 偶案頭上就有兩本書。偶認爲若是不是準備寫博士論文的話,就不要學 ACE 了。ACE 是爲那些準備一套代碼通吃 windows、linux、unix、嵌入式的程序員用的,致使其設計極其複雜。只是,有幾我的的代碼,會要面向這麼複雜的運行環境?能夠說絕大多數人都不須要 ACE,真正須要 ACE 功能的人,也許不必定以爲 ACE 質量夠好。 偶曾經在 qq 的目錄中,發現 ACE 的 DLL。最新版的 qq 是否還用 ACE 就不可知了。
  

   七. 圖形圖像處理 中沒有提到CGAL這一強大的計算幾何算法庫
   
   NDK 2.0 - Network Development Kit,基於SOCKET的主線程網絡開發包,簡單應用很是簡單,不知道有沒有好點的支持多線程的網絡開發包?

   libevent, memcached, redis,log4cplus,gtest.... 以及google發佈的一系列開源的C/C++工具庫,太多了
   
    libconfig作配置比較簡便,lua有點大炮打蚊子了


-----------------------------------------------------------------------------------------------------------------------------------------


C/C++網絡庫

(1)ACE

   龐大、複雜,適合大型項目。開源、免費,不依賴第三方庫,支持跨平臺。

    http://www.cs.wustl.edu/~schmidt/ACE.html

    http://download.dre.vanderbilt.edu/

 

(2)Asio

   Asio基於Boost開發的異步IO庫,封裝了Socket,簡化基於socket程序的開發。

開源、免費,支持跨平臺。

   http://think-async.com/

 

(3)POCO

   POCO C++ Libraries 提供一套 C++ 的類庫用以開發基於網絡的可移植的應用程序,功能涉及線程、線程同步、文件系統訪問、流操做、共享庫和類加載、套接字以及網絡協議包括:HTTP、 FTP、SMTP 等;其自己還包含一個 HTTP 服務器,提供 XML 的解析和 SQL 數據庫的訪問接口。POCO庫的模塊化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,因爲C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,愈來愈流行。

   http://pocoproject.org/

 

(4)libevent

  Libevent是一個輕量級的開源高性能網絡庫,從它的官網標題:libevent-an event notification library就能知道它的機制是採用事件觸發,封裝瞭如下三種事件的響應:IO事件,定時器事件,信號事件。select模型來實現跨平臺的操做,Windows環境下支持IOCP。Google的開源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見該庫的質量。

   http://libevent.org/

 

(5)libev

  libev和libevent很像,按照做者的介紹,能夠做爲libevent的替代者,可以提供更高的性能。

  libev是一個高性能事件循環,所實現的功能就是一個強大的reactor。

  http://software.schmorp.de/pkg/libev.html

 

(6)c++ sockets library

  封裝了sockets C API的C++類庫。

  支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協議, 高度可定製的錯誤處理。

  http://www.alhem.net/Sockets/

 

(7)libcurl

   libcurl是免費的輕量級的客戶端網絡庫,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3,   POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上傳, HTTP form上傳,代理,cookies, 用戶名與密碼認證。

  若是你開發的是客戶端,libcurl是一個不錯的選擇。

   http://curl.haxx.se/libcurl/


-----------------------------------------------------------------------------------------------------------------------------------

ARM下一些經常使用庫的移植

一些庫在各個項目常常重用.如jpeg,freetype,iconv 等.每次大型項目均會反覆重用.所以按照原來項目規範,通常都放在項目libs目錄下,但後來發現,每一個項目都作重複操做.也徹底沒有必要.由於如今是將其歸綱到一個comm_lib公用信息.
如下是經常使用庫的ARM-Linux移植,我是放在/home/hxy/common_lib 目錄下.按到移植規範,輸出在 output/arm-linux下,庫自己在 libs 下面.
如下是常見庫的移植.在這裏留做教學和備份用.


通用類


1.zlib庫移植

--------下載
--------解壓 tar xvzf zlib-1.2.3.tar.gz
--------cd zlib-1.2.3
--------生成Makefile(注意zlib只能靜態,動態分開編譯,所以要生成兩次Makefile和兩次編譯和安裝)
生成靜態庫 ./configure --prefix=$PWD/output/arm
export CC=arm-linux-gcc CPP="arm-linux-gcc -E" AR="arm-linux-ar rc" RANLIB=arm-linux-ranli   生成動態庫 ./configure --shared --prefix=$PWD/output/arm
export CC=arm-linux-gcc CPP="arm-linux-gcc -E" AR="arm-linux-ar rc" RANLIB=arm-linux-ranlib
--------編譯 make
--------安裝 make install


圖像類


1.jpeg庫,用於jpeg圖像處理

ftp://ftp.nz.debian.org/gentoo/distfiles/jpegsrc.v6b.tar.gz
解壓 tar xvzf jpegsrc.v6b.tar.gz
cd jpeg-6b
生成Makefile
./configure --enable-shared --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux
編譯 make
安裝 make install

注意這個庫的安裝程序有BUG,不會自動建立發佈的lib,include,man等,所以要手工建立,要不先把其它庫作好,再安裝這個庫
mkdir -p /home/hxy/common_lib/output/arm-linux/include 
mkdir -p /home/hxy/common_lib/output/arm-linux/lib 
mkdir -p /home/hxy/common_lib/output/arm-linux/man/man1

2.png 用於PNG圖像顯示

主頁http://www.libpng.org/
下載http://prdownloads.sourceforge.net/libpng/libpng-1.4.1.tar.gz?download
解壓 tar xvjf libpng-1.2.19.tar.bz2
cd libpng-1.2.19
生成Makefile
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
編譯 make
安裝 make install


3.tiff庫 ,(tiff格式顯示)

官網 http://www.libtiff.org
下載 http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz
解壓 tar xvzf tiff-3.8.2.tar.gz
cd tiff-3.8.2
生成makefile
./configure --host=arm-linux --enable-shared --enable-static --enable-jpeg --enable-zlib --prefix=$PWD/../../output/arm-linux
編譯 make
安裝 make install



音頻類


2.mad

官網 http://www.underbit.com/products/mad/
解壓 tar xvzf libmad-0.15.1b.tar.gz
cd libmad-0.15.1b
生成Makefile(標準)
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
去掉Makefile中-fforce-mem
由於arm-linux-gcc不認識這個選項,編譯提示 error: unrecognized command line option "-fforce-mem"
編譯make
安裝 make install



3.id3tag:讀取mp3信息

官網 http://www.underbit.com/products/mad/
解壓 tar xvzf libid3tag-0.15.1b.tar.gz
cd libid3tag-0.15.1b
生成Makefile(標準)
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
編譯 make
安裝 make install


4.ogg 一種音頻解碼格式

  
解壓 tar xvzf libogg-1.1.4.tar.gz
cd libogg-1.1.4
生成Makefile (標準)
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
編譯make
安裝 make install


文字編碼類


1.iconv庫 用於文字編碼轉換

主頁 :http://www.gnu.org/software/libiconv     
下載:http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
解壓 tar xvzf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
生成Makefile (標準)
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
編譯make
安裝 make install


      

2. freetype:開源高質理字體顯示函數庫
    
主頁:http://www.freetype.org/
下載:http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
解壓 tar xvzf freetype-2.3.11.tar.gz
cd freetype-2.3.11
生成Makefile (標準)
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
編譯make
安裝 make install



-------------------------------------------------------------------------------------------------------------------------------------------------------

關於 C++ 框架、庫和資源的一些彙總列表

[1]由 fffaraz 發起和維護。

內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日誌、代碼分析等。

標準庫

C++標準庫,包括了STL容器,算法和函數等。

 

框架

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 IO
  • LibU : 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.

 

人工智能

  • btsk :遊戲行爲樹啓動器工具
  • Evolving Objects:基於模板的,ANSI C++演化計算庫,可以幫助你很是快速地編寫出本身的隨機優化算法。
  • Neu:C++11框架,編程語言集,用於建立人工智能應用程序的多用途軟件系統。

 

異步事件循環

  • Boost.Asio:用於網絡和底層I/O編程的跨平臺的C++庫。
  • libev :功能齊全,高性能的時間循環,輕微地仿效libevent,可是再也不像libevent同樣有侷限性,也修復了它的一些bug。
  • libevent :事件通知庫
  • libuv :跨平臺異步I/O。

 

音頻

音頻,聲音,音樂,數字化音樂庫

  • FMOD :易於使用的跨平臺的音頻引擎和音頻內容的遊戲創做工具。
  • Maximilian :C++音頻和音樂數字信號處理庫
  • OpenAL :開源音頻庫—跨平臺的音頻API
  • Opus:一個徹底開放的,免版稅的,高度通用的音頻編解碼器
  • 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 API
  • Thrust :相似於C++標準模板庫的並行算法庫
  • HPX :用於任何規模的並行和分佈式應用程序的通用C++運行時系統
  • VexCL :用於OpenCL/CUDA 的C++向量表達式模板庫。

 

容器

  • C++ B-tree :基於B樹數據結構,實現命令內存容器的模板庫
  • Hashmaps: C++中開放尋址哈希表算法的實現

 

密碼學

  • Bcrypt :一個跨平臺的文件加密工具,加密文件能夠移植到全部可支持的操做系統和處理器中。
  • BeeCrypt
  • Botan: C++加密庫
  • Crypto++:一個有關加密方案的免費的C++庫
  • GnuPG: OpenPGP標準的完整實現
  • GnuTLS :實現了SSL,TLS和DTLS協議的安全通訊庫
  • Libgcrypt
  • libmcrypt
  • LibreSSL:免費的SSL/TLS協議,屬於2014 OpenSSL的一個分支
  • LibTomCrypt:一個很是全面的,模塊化的,可移植的加密工具
  • libsodium:基於NaCI的加密庫,執拗己見,容易使用
  • Nettle 底層的加密庫
  • OpenSSL : 一個強大的,商用的,功能齊全的,開放源代碼的加密庫。
  • Tiny AES128 in C :用C實現的一個小巧,可移植的實現了AES128ESB的加密算法

 

數據庫

數據庫,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++單元測試框架

 

遊戲引擎

  • Cocos2d-x :一個跨平臺框架,用於構建2D遊戲,互動圖書,演示和其餘圖形應用程序。
  • Grit :社區項目,用於構建一個免費的遊戲引擎,實現開放的世界3D遊戲。
  • Irrlicht :C++語言編寫的開源高性能的實時#D引擎
  • Polycode:C++實現的用於建立遊戲的開源框架(與Lua綁定)。

 

圖形用戶界面

  • CEGUI : 很靈活的跨平臺GUI庫
  • FLTK :快速,輕量級的跨平臺的C++GUI工具包。
  • GTK+: 用於建立圖形用戶界面的跨平臺工具包
  • gtkmm :用於受歡迎的GUI庫GTK+的官方C++接口。
  • imgui:擁有最小依賴關係的當即模式圖形用戶界面
  • libRocket :libRocket 是一個C++ HTML/CSS 遊戲接口中間件
  • MyGUI :快速,靈活,簡單的GUI
  • Ncurses:終端用戶界面
  • QCustomPlot :沒有更多依賴關係的Qt繪圖控件
  • Qwt :用戶與技術應用的Qt 控件
  • QwtPlot3D :功能豐富的基於Qt/OpenGL的C++編程庫,本質上提供了一羣3D控件
  • OtterUI :OtterUI 是用於嵌入式系統和互動娛樂軟件的用戶界面開發解決方案
  • PDCurses 包含源代碼和預編譯庫的公共圖形函數庫
  • wxWidgets C++庫,容許開發人員使用一個代碼庫能夠爲widows, Mac OS X,Linux和其餘平臺建立應用程序

 

圖形

  • bgfx:跨平臺的渲染庫
  • Cairo:支持多種輸出設備的2D圖形庫
  • Horde3D 一個小型的3D渲染和動畫引擎
  • magnum C++11和OpenGL 2D/3D 圖形引擎
  • Ogre 3D 用C++編寫的一個面向場景,實時,靈活的3D渲染引擎(並不是遊戲引擎)
  • OpenSceneGraph 具備高性能的開源3D圖形工具包
  • Panda3D 用於3D渲染和遊戲開發的框架,用Python和C++編寫。
  • Skia 用於繪製文字,圖形和圖像的完整的2D圖形庫
  • urho3d 跨平臺的渲染和遊戲引擎。

 

圖像處理

  • Boost.GIL:通用圖像庫
  • CImg :用於圖像處理的小型開源C++工具包
  • CxImage :用於加載,保存,顯示和轉換的圖像處理和轉換庫,能夠處理的圖片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。
  • FreeImage :開源庫,支持如今多媒體應用所需的通用圖片格式和其餘格式。
  • GDCM:Grassroots DICOM 庫
  • ITK:跨平臺的開源圖像分析系統
  • Magick++:ImageMagick程序的C++接口
  • MagickWnd:ImageMagick程序的C++接口
  • OpenCV : 開源計算機視覺類庫
  • tesseract-ocr:OCR引擎
  • VIGRA :用於圖像分析通用C++計算機視覺庫
  • VTK :用於3D計算機圖形學,圖像處理和可視化的開源免費軟件系統。

 

國際化

  • gettext :GNU `gettext’
  • IBM ICU:提供Unicode 和全球化支持的C、C++ 和Java庫
  • libiconv :用於不一樣字符編碼之間的編碼轉換庫

 

Jason

  • frozen : C/C++的Jason解析生成器
  • Jansson :進行編解碼和處理Jason數據的C語言庫
  • jbson :C++14中構建和迭代BSON data,和Json 文檔的庫
  • JeayeSON:很是健全的C++ JSON庫,只包含頭文件
  • JSON++ : C++ JSON 解析器
  • json-parser:用可移植的ANSI C編寫的JSON解析器,佔用內存很是少
  • json11 :一個迷你的C++11 JSON庫
  • jute :很是簡單的C++ JSON解析器
  • ibjson:C語言中的JSON解析和打印庫,很容易和任何模型集成。
  • libjson:輕量級的JSON庫
  • PicoJSON:C++中JSON解析序列化,只包含頭文件
  • qt-json :用於JSON數據和 QVariant層次間的相互解析的簡單類
  • QJson:將JSON數據映射到QVariant對象的基於Qt的庫
  • RapidJSON: 用於C++的快速JSON 解析生成器,包含SAX和DOM兩種風格的API
  • YAJL :C語言中快速流JSON解析庫

 

日誌

  • Boost.Log :設計很是模塊化,而且具備擴展性
  • easyloggingpp:C++日誌庫,只包含單一的頭文件。
  • Log4cpp :一系列C++類庫,靈活添加日誌到文件,系統日誌,IDSA和其餘地方。
  • templog:輕量級C++庫,能夠添加日誌到你的C++應用程序中

 

機器學習

  • Caffe :快速的神經網絡框架
  • CCV :以C語言爲核心的現代計算機視覺庫
  • mlpack :可擴展的C++機器學習庫
  • OpenCV:開源計算機視覺庫
  • Recommender:使用協同過濾進行產品推薦/建議的C語言庫。
  • SHOGUN:Shogun 機器學習工具
  • sofia-ml :用於機器學習的快速增量算法套件

 

數學

  • Armadillo :高質量的C++線性代數庫,速度和易用性作到了很好的平衡。語法和MatlAB很類似
  • blaze:高性能的C++數學庫,用於密集和稀疏算法。
  • ceres-solver :來自谷歌的C++庫,用於建模和解決大型複雜非線性最小平方問題。
  • CGal: 高效,可靠的集合算法集合
  • cml :用於遊戲和圖形的免費C++數學庫
  • Eigen :高級C++模板頭文件庫,包括線性代數,矩陣,向量操做,數值解決和其餘相關的算法。
  • GMTL:數學圖形模板庫是一組普遍實現基本圖形的工具。
  • GMP:用於個高精度計算的C/C++庫,處理有符號整數,有理數和浮點數。

 

多媒體

  • GStreamer :構建媒體處理組件圖形的庫
  • LIVE555 Streaming Media :使用開放標準協議(RTP/RTCP, RTSP, SIP) 的多媒體流庫
  • libVLC :libVLC (VLC SDK)媒體框架
  • QtAv:基於Qt和FFmpeg的多媒體播放框架,可以幫助你垂手可得地編寫出一個播放器
  • SDL :簡單直控媒體層
  • SFML :快速,簡單的多媒體庫

 

網絡

  • ACE:C++面向對象網絡變成工具包
  • Boost.Asio:用於網絡和底層I/O編程的跨平臺的C++庫
  • Casablanca:C++ REST SDK
  • cpp-netlib:高級網絡編程的開源庫集合
  • Dyad.c:C語言的異步網絡
  • libcurl :多協議文件傳輸庫
  • Mongoose很是輕量級的網絡服務器
  • Muduo :用於Linux多線程服務器的C++非阻塞網絡庫
  • net_skeleton :C/C++的TCP 客戶端/服務器庫
  • nope.c :基於C語言的超輕型軟件平臺,用於可擴展的服務器端和網絡應用。 對於C編程人員,能夠考慮node.js
  • Onion :C語言HTTP服務器庫,其設計爲輕量級,易使用。
  • POCO:用於構建網絡和基於互聯網應用程序的C++類庫,能夠運行在桌面,服務器,移動和嵌入式系統。
  • RakNet:爲遊戲開發人員提供的跨平臺的開源C++網絡引擎。
  • Tuf o :用於Qt之上的C++構建的異步Web框架。
  • WebSocket++ :基於C++/Boost Aiso的websocket 客戶端/服務器庫
  • ZeroMQ :高速,模塊化的異步通訊庫

 

物理學

動力學仿真引擎

  • Box2D:2D的遊戲物理引擎。
  • Bullet :3D的遊戲物理引擎。
  • Chipmunk :快速,輕量級的2D遊戲物理庫
  • LiquidFun:2D的遊戲物理引擎
  • ODE :開放動力學引擎-開源,高性能庫,模擬剛體動力學。
  • ofxBox2d:Box2D開源框架包裝器。
  • Simbody :高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。

 

機器人學

  • MOOS-IvP :一組開源C++模塊,提供機器人平臺的自主權,尤爲是自主的海洋車輛。
  • MRPT:移動機器人編程工具包
  • PCL :點雲庫是一個獨立的,大規模的開放項目,用於2D/3D圖像和點雲處理。
  • Robotics Library (RL): 一個獨立的C++庫,包括機器人動力學,運動規劃和控制。
  • RobWork:一組C++庫的集合,用於機器人系統的仿真和控制。
  • ROS :機器人操做系統,提供了一些庫和工具幫助軟件開發人員建立機器人應用程序。

 

科學計算

  • FFTW :用一維或者多維計算DFT的C語言庫。
  • GSL:GNU科學庫。

 

腳本

  • ChaiScript :用於C++的易於使用的嵌入式腳本語言。
  • Lua :用於配置文件和基本應用程序腳本的小型快速腳本引擎。
  • luacxx:用於建立Lua綁定的C++ 11 API
  • SWIG :一個可讓你的C++代碼連接到JavaScript,Perl,PHP,Python,Tcl和Ruby的包裝器/接口生成器
  • V7:嵌入式的JavaScript 引擎。
  • V8 :谷歌的快速JavaScript引擎,能夠被嵌入到任何C++應用程序中。

 

序列化

  • Cap’n Proto :快速數據交換格式和RPC系統。
  • cereal :C++11 序列化庫
  • FlatBuffers :內存高效的序列化庫
  • MessagePack :C/C++的高效二進制序列化庫,例如 JSON
  • protobuf :協議緩衝,谷歌的數據交換格式。
  • protobuf-c :C語言的協議緩衝實現
  • SimpleBinaryEncoding:用於低延遲應用程序的對二進制格式的應用程序信息的編碼和解碼。
  • Thrift :高效的跨語言IPC/RPC,用於C++,Java,Python,PHP,C#和其它多種語言中,最初由Twitter開發。

 

視頻

  • libvpx :VP8/VP9編碼解碼SDK
  • FFmpeg :一個完整的,跨平臺的解決方案,用於記錄,轉換視頻和音頻流。
  • libde265 :開放的h.265視頻編解碼器的實現。
  • OpenH264:開源H.364 編解碼器。
  • Theora :免費開源的視頻壓縮格式。

 

虛擬機

  • CarpVM:C中有趣的VM,讓咱們一塊兒來看看這個。
  • MicroPython :旨在實現單片機上Python3.x的實現
  • TinyVM:用純粹的ANSI C編寫的小型,快速,輕量級的虛擬機。

 

Web應用框架

  • Civetweb :提供易於使用,強大的,C/C++嵌入式Web服務器,帶有可選的CGI,SSL和Lua支持。
  • CppCMS :免費高性能的Web開發框架(不是 CMS).
  • Crow :一個C++微型web框架(靈感來自於Python Flask)
  • Kore :使用C語言開發的用於web應用程序的超快速和靈活的web服務器/框架。
  • libOnion:輕量級的庫,幫助你使用C編程語言建立web服務器。
  • QDjango:使用C++編寫的,基於Qt庫的web框架,試圖效仿Django API,所以得此名。
  • Wt :開發Web應用的C++庫。

 

XML

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:‘條形碼掃描器’庫,能夠掃描照片,圖片和視頻流中的條形碼,並返回結果。
  • CppVerbalExpressions :易於使用的C++正則表達式
  • QtVerbalExpressions:基於C++ VerbalExpressions 庫的Qt庫
  • 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++調試器列表

 

集成開發環境(IDE)

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的根據你敲的代碼快速模糊搜索並進行代碼補全的引擎。

 

構建系統

  • Bear :用於爲clang工具生成編譯數據庫的工具
  • Biicode:基於文件的簡單依賴管理器。
  • CMake :跨平臺的免費開源軟件用於管理軟件使用獨立編譯的方法進行構建的過程。
  • CPM:基於CMake和Git的C++包管理器
  • FASTBuild:高性能,開源的構建系統,支持高度可擴展性的編譯,緩衝和網絡分佈。
  • Ninja :專一於速度的小型構建系統
  • Scons :使用Python scipt 配置的軟件構建工具
  • tundra :高性能的代碼構建系統,甚至對於很是大型的軟件項目,也能提供最好的增量構建次數。
  • tup:基於文件的構建系統,用於後臺監控變化的文件。

 

靜態代碼分析

提升質量,減小瑕疵的代碼分析工具列表


結尾

推薦閱讀:

C/C++程序員必須熟練應用的開源項目  http://blog.csdn.net/langeldep/article/details/6293655

相關文章
相關標籤/搜索