lzma源碼
string[] arm = { "e", "D: \\temp\\log.rtf", "D: \\temp\\log.7z"};
// string[] arm = { "b", "D: \\temp\\lo.7z", "D: \\temp\\log_2232.txt",}; //, -d21, -fb32, -mfbt4
LzmaAlone.Main1(arm);
B. windows中type命令的源碼是什麼
DOS系統命令都能用輸入command能查看面命令 環境變數PATH面應用程序名作命令用
面總結些東西內容太
關某命令詳細信息請鍵入 HELP 命令名
XP.CMD命令全
關某命令詳細信息請鍵入 HELP 命令名ASSOC 顯示或修改文件擴展名關聯AT 計劃計算機運行命令程序ATTRIB 顯示或更改文件屬性BREAK 設置或清除擴展式 CTRL+C 檢查CACLS 顯示或修改文件訪問控制列表(ACLs)CALL 另批處理程序調用CD 顯示前目錄名稱或其更改CHCP 顯示或設置代碼頁數CHDIR 顯示前目錄名稱或其更改CHKDSK 檢查磁碟並顯示狀態報告CHKNTFS 顯示或修改啟間磁碟檢查CLS 清除屏幕CMD 打另 Windows 命令解釋程序窗口COLOR 設置默認控制台前景背景顏色COMP 比較兩或兩套文件內容COMPACT 顯示或更改 NTFS 區文件壓縮CONVERT FAT 卷轉換 NTFS您能轉換前驅器COPY 至少文件復制另位置DATE 顯示或設置期DEL 刪除至少文件DIR 顯示目錄文件目錄DISKCOMP 比較兩軟盤內容DISKCOPY 軟盤內容復制另軟盤DOSKEY 編輯命令行、調用 Windows 命令並創建宏ECHO 顯示消息或命令顯打或關ENDLOCAL 結束批文件環境更改本化ERASE 刪除至少文件EXIT 退 CMD.EXE 程序(命令解釋程序)FC 比較兩或兩套文件並顯示同處FIND 文件搜索文字字元串FINDSTR 文件搜索字元串FOR 套文件每文件運行指定命令FORMAT 格式化磁碟便跟 Windows 使用FTYPE 顯示或修改用於文件擴展名關聯文件類型GOTO Windows 命令解釋程序指向批處理程序某標明行GRAFTABL 啟用 Windows 圖像模式顯示擴展字元集HELP 提供 Windows 命令幫助信息IF 執行批處理程序條件性處理LABEL 創建、更改或刪除磁碟卷標MD 創建目錄MKDIR 創建目錄MODE 配置系統設備MORE 顯示結屏幕MOVE 文件目錄移另目錄PATH 顯示或設置執行文件搜索路徑PAUSE 暫停批文件處理並顯示消息POPD 原 PUSHD 保存前目錄值PRINT 列印文本文件PROMPT 更改 Windows 命令提示符PUSHD 保存前目錄其進行更改RD 刪除目錄RECOVER 問題磁碟恢復讀信息REM 記錄批文件或 CONFIG.SYS 注釋REN 重命名文件RENAME 重命名文件REPLACE 替換文件RMDIR 刪除目錄SET 顯示、設置或刪除 Windows 環境變數SETLOCAL 始批文件環境更改本化SHIFT 更換批文件替換參數位置SORT 輸入進行類START 啟另窗口運行指定程序或命令SUBST 路徑跟驅器號關聯TIME 顯示或設置系統間TITLE 設置 CMD.EXE 窗口標題TREE 圖形模式顯示驅器或路徑目錄結構TYPE 顯示文本文件內容VER 顯示 Windows 版本VERIFY 告訴 Windows 否驗證文件否已確寫入磁碟VOL 顯示磁碟卷標序列號XCOPY 復制文件目錄樹
appwiz.cpl------------添加刪除程序
control userpasswords2--------用戶帳戶設置
cleanmgr-------垃圾整理
CMD--------------命令提示符作 Windows 附件PingConvert 些能圖形環境 使用功能要藉助完
cmd------jview察看Java虛擬機版本
command.com------調用則系統內置 NTVDM DOS虛擬機完全類似 Virtual PC 虛擬環境系統本身聯系我命令提示符運行 DOS 程序實際 自轉移 NTVDM虛擬機 CMD 本身沒關系
calc-----------啟計算器
chkdsk.exe-----Chkdsk磁碟檢查
compmgmt.msc---計算機管理
conf-----------啟 netmeeting
control userpasswords2-----User Account 許可權設置
devmgmt.msc--- 設備管理器
diskmgmt.msc---磁碟管理實用程序
dfrg.msc-------磁碟碎片整理程序
drwtsn32------ 系統醫
dvdplay--------啟Media Player
dxdiag-----------DirectX Diagnostic Tool
gpedit.msc-------組策略編輯器
gpupdate /target:computer /force 強制刷新組策略
eventvwr.exe-----事件查看器
explorer-------打資源管理器
logoff---------注銷命令
lusrmgr.msc----本機用戶組
msinfo32---------系統信息
msconfig---------系統配置實用程序
net start (servicename)----啟該服務
net stop (servicename)-----停止該服務
notepad--------打記事本
nusrmgr.cpl-------同control userpasswords打用戶帳戶控制面板
Nslookup-------IP址偵測器
oobe/msoobe /a----檢查XP否激
perfmon.msc----計算機性能監測程序
progman--------程序管理器
regedit----------注冊表編輯器
regedt32-------注冊表編輯器
regsvr32 /u *.dll----停止dll文件運行
route print------查看路由表
rononce -p ----15秒關機
rsop.msc-------組策略結集
rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----啟空白Windows 圖片傳真查看器
secpol.msc--------本安全策略
services.msc---本服務設置
sfc /scannow-----啟系統文件檢查器
sndrec32-------錄音機
taskmgr-----任務管理器(適用於2000/xp/2003)
tsshutdn-------60秒倒計關機命令
winchat--------XP自帶區域網聊
winmsd---------系統信息
winver-----顯示About Windows 窗口
wupdmgr-----------Windows Update
一,編譯之前的准備。
1) 了解代碼組織結構。
Chrome source非常龐大,並且在其主目錄下還包含有工具和組件,任何一個工具和組件也附帶有其源代碼。首先得熟悉這些源代碼的組織結構,在中包含如下子目錄:releases,曾經發布過的chrome源代碼的正式版本;trunk,當前最新的源代碼。由於releases中的代碼比較舊,這里就不做說明了,只說明trunk的結構。在trunk下面有3個重要的目錄,deps包含了chrome編譯和運行所需要的全部組件的代碼。src裡麵包含的則是chrome的主程序的代碼,tools包含的是下載和配置編譯所需要的第三方工具的壓縮包和源代碼,其中就有svn和python這2個比較重要的工具,後面再詳細介紹。暫時做這樣一個簡單的介紹,因為其組織結構比較負責,以後再作補充斧正。
2)如何下載和同步源代碼。
首先談談下載:
1,最簡單的方法是從chrome官網上直接下載源代碼壓縮包,地址是。
2,或者採用svn從trunk/src這個地方heckout,這要求你先在本地建一個源代碼的主目錄。
3,另外一個辦法則是採用google提供的一個部署工具depot_tools。雖然這幾種辦法都可下載完整的源代碼,但目前的情況是:chrome基於Visual Stdio 2005 進行編譯,如果順利完成編譯工作,自然少不了sln文件,較早的源代碼中包含有現成的sln和vcproject文件,但後來做了修改,這些文件被拋棄掉,Google自己開發了一種腳本工具叫做GYP,這個工具採用python編寫,GYP採用了自定義的一套規則,用於生成各種工程文件。而關鍵的python則包含於depot_tools中,因此不論採用什麼方法下載的代碼,都得下載depot_tools這個工具,以獲得必須的工程文件。
depot_tools位於 trunk/tools 下面,包括一個目錄和一個zip格式的壓縮包。
3)關於編譯器
前面提到Chrome採用Visual Stdio 2005進行編譯,根據的說明,需進行如下操作正常編譯
a, 安裝Visual Studio 2005.
b, 安裝Visual Studio 2005 Service Packe 1.
c, 安裝Visual Studio Hotfix 947315.
d, 如果是vista系統,還需安裝Visual Studio 2005 Service Packe 1 Update for Windows Vista.
e, 安裝Windows 2008 SDK,如果是Visual Studio 2008則不需要這一步。
f, 配置Windows 2008 SDK,使2008 SDK成為首選開發庫,以獲得一些新功能和特性。辦法是在開始->程序->Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool,選擇make current按鈕。也可以在VS裡面手動配置include和libary路徑,效果是一樣的。
二,如何配置工程文件
1,如果是採用depot_tools,那麼從代碼下載到生成sln文件會自動完成。其步驟是
(1)下載depot_tools到本地存儲,假設位於d:/depot_tools.
(2)將d:/depot_tools添加到系統環境變數中。
(3)創建一個源代碼根目錄,假設為 d:/chrome,目錄不得包含空格。
(4)在命令行下切換當前目錄到d:/chrome。
(5)執行命令 gclient config trunk/src ,該命令會首先下載svn和python分別到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。
(6)執行命令 gclient sync 這個命令會調用svn同步源代碼。這個過程會比較漫長。全部完成之後全部源代碼就保存在d:/chrome裡面。未編譯的代碼大約有4個G左右,過程將十分漫長。這樣獲得的源代碼已經包含所有的工程文件,可直接打開。
重點說明一下gclient,它實際上是一個批處理文件,它主要做了如下一些事情,首先設置環境變數,如代碼根目錄,工具根目錄等。其次調用win_tools.bat從伺服器下載svn和python。最後調用python.exe對Chrome.gyp進行解析生成所有工程文件。
另外需要說明的是,gclient sync的過程非常漫長,根據命令行的提示來看總共需要同步67個項目(不是工程),期間可能會因為一些原因導致錯誤而退出這個過程,需要繼續調用sync。比如網路出現故障svn會多次進入sleep狀態然後重試,如果多次失敗就會報錯退出,還有的情況是某些子目錄的屬性問題無法同步,可根據提示進行操作。還有個目前新出現的問題,下面2個目錄「src/webkit/data/layout_tests/LayoutTests」和「src/third_party/WebKit/LayoutTests」的源代碼是從src.webkit.org簽出來的,但是這個網站目前存在問題無法簽出代碼, 需要屏蔽掉這2個目錄,由於裡面是測試代碼,即使丟棄也不會影響整個工程的編譯,方法是打開trunk下面的.gclient文件,向裡面添加如下內容
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests":None腸川慣緞甙等軌勸憨滑,
},
這樣svn就能完成代碼的同步了。最後gclient會調用depot_tools/python_bin/python.exe 對 src/build/gyp_
chromium進行處理,這樣就得到了所有的sln和vcproject文件。
2,如果是下載的代碼壓縮包或者checkout的代碼,代碼目錄裡面沒有sln文件,這個時候需要調用命令行進入源代碼根目錄,然後執行命令 gclient runhooks --force,命令執行後會直接對Chrome.gyp進行解析,生成sln文件。
在實際下載過程中,最開始的時候我用TortoiseSVN從trunk/src checkout源代碼,但是得到的代碼只有幾百兆,執行gclient runhooks --force命令後也沒有找到sln文件,具體原因未知,不建議使用此方式。而直接下載代碼壓縮包的方式沒有嘗試過,不知道是否可行。因此最穩妥的方法還是使用depot_tools來部署和處理源代碼。
三 編譯工程
啟動Visual Studio 2005打開 src/chrome/browser/chrome.sln,或者打開src/build/all.sln,如果打開的是chrome.sln裡麵包含480個工程,而all.sln則包含507個工程,一些09年的編譯說明提到有300左右的工程,可見chrome的代碼變動比較大。對整個解決方案進行編譯,打開需要2個小時才能完成編譯,視硬體環境而定,內存越大越快,推薦4G以上內存,酷睿2核或者4核。編譯完成以後據說會佔用30G的空間。編譯後的文件位於 d:/chorme/chrome/debug 目錄或者 d:/chorme/chrome/release目錄下。
四 chrome涉及的開源項目
Chrome 採用了很多開源項目,這里把它們列出來以備後用,目前Chrome涉及25個開源代碼:
1、Google Breakpad
/src/breakpad
開源的跨開台程序崩潰報告系統。
2、Google URL
/src/googleurl
Google小巧的URL解析整理庫。
3、Skia
/src/skia
矢量圖引擎。
4、Google v8
/src/v8
Google開源的JavaScript引擎。V8實現了ECMA-262第三版的ECMAScript規范,可運行於Windows XP 和 Vista, Mac OS X 10.5 (Leopard), 及 linux等基於IA-32 或 ARM 的系統之上。V8可單獨運行也可嵌入到任何C++程序中。
5、Webkit
/src/webki
開源的瀏覽器引擎
6、Netscape Portable Runtime (NSPR)
/src/base/third_party/nspr
Netscape Portable Runtime (NSPR) 提供了系統級平台無關的API及類似libc的函數。
7、Network Security Services (NSS)
/src/base/third_party/nss
Network Security Services (NSS) 一套用於支持伺服器端與客戶端安全開發的跨平台函數庫。程序通過NSS可支持SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 認證及其它一些安全標准。
8、Hunspell
/src/chrome/third_party/hunspell
Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.
9、Windows Template Library
/src/chrome/third_party/wtl
用於開發Windows程序與UI組件的C++ library。WTL擴展了ATL (Active Template Library) 並提供一套用於controls, dialogs, frame windows, GDI objects等開發的類。
10、Google C++ Testing Framework
/src/testing/gtest
Google用於編寫C++測試的基於xUnit架構的框架,可用於多種平台上:Linux, Mac OS X, Windows, Windows CE, and Symbian。支持自動測試發現,有一套豐富的Assertions斷言,用於可自定義斷言,death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.
11、bsdiff 與 bspatch
/src/third_party/bsdiff 及 /src/third_party/bspatch
bsdiff 與 bspatch 用於為二進制文件生成補丁。
12、bzip2
/src/third_party/bzip2
bzip2使用Burrows-Wheeler block sorting text compression 演算法與Huffman編碼壓縮文件。
13、International Components for Unicode (ICU)
/src/third_party/icu38
ICU是一套成熟並被廣泛使用的C/C++ 及 Java 庫,可為軟體提供Unicode與全球化支持。
14、libjpeg
/src/third_party/libjpeg
用於處理JPEG (JFIF)圖像格式的庫。
15、libpng
/src/third_party/libpng
PNG圖像格式庫。支持絕大部分的PNG特性,可擴展。已經被廣泛地使用了13年以上了。
16、libxml
/src/third_party/libxml
C語言的XML解析庫。
17、libxslt
/src/third_party/libxslt
C語言的XSLT庫。
18、LZMA
/src/third_party/lzma_sdk
LZMA為7-Zip軟體中7z格式壓縮所使用的壓縮演算法,有很好的壓縮效果。
19、stringencoders
/src/third_party/modp_b64
一系列高性能的c-string轉換函數,比如:base 64 encoding/decoding。通常比其標准實現快兩倍以上。
20、Netscape Plugin Application Programming Interface (NPAPI)
/src/third_party/npapi
多種瀏覽器使用的跨平台插件架構。
21、Pthreads-w32
/src/third_party/pthread
用於編寫多線程程序的API
22、SCons - a software construction tool
/src/third_party/scons
開源的軟體構建工具——下一代的編譯工具。可以認為SCons是改進過的跨平台配上autoconf/automake與ccache的Make工具的子系統。
23、sqlite
/src/third_party/sqlite
大名鼎鼎的嵌入式資料庫引擎。自管理、零配置、無需伺服器、支持事務。
24、TLS Lite
/src/third_party/tlslite
SSL 3.0, TLS 1.0, and TLS 1.1的Python免費實現庫。TLS Lite支持這些安全驗證方式:SRP, shared keys, and cryptoIDs in addition to X.509 certificates。註:Chrome並不包涵Python。TLS Lite用於Chrome開發過程中的代碼覆蓋、依賴檢查、網頁載入時間測試及生成html結果比較等。
25、zlib
/src/third_party/zlib
zlib為一套用於任意平台與機器的無損數據壓縮的庫,它免費、自由、無任何法律專利問題。
C. linux tar 不支持 lzma 如何添加呢
gnu tar的1.26版本開始支持lzma和xz壓縮,下載tar源碼編譯安裝就行了
D. 吐血整理:C++編程語言資源匯總
關於 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 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計算機圖形學,圖像處理和可視化的開源免費軟體系統。
最後, 對於學習編程或者在工作想升職的程序員兄弟,如果你想更好的提升你的編程能力幫助你提升水平! 筆者這里或許可以幫到你~
編程學習書籍分享:
編程學習視頻分享:
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!
E. 用lzma演算法進行文件的加密和解密,會的進....
這種演算法不可能有源碼給你的,要掌握其中的原理思想,自己編代碼
F. make oldconfig 和 make defconfig有何區別
make oldconfig和make defconfig的區別為:意思不同、用法不同、側重點不同。
一、意思不同
1.make oldconfig意思:生成舊配置。
2.make defconfig意思:生成內核編譯。
二、用法不同
1.make oldconfig用法:make oldconfig和make config類似,但是它的作用是在現有的內核設置文件基礎上建立一個新的設置文件,只會向用戶提供有關新內核特性的問題,在新內核升級的過程 中,make oldconfig非常有用,用戶將現有的配置文件.config復制到新內核的源碼中,執行make oldconfig,此時,用戶只需要回答那些針對新增特性的問題。
2.make defconfig用法:基於文本的最為傳統的也是最為枯草的一種配置方式,但是它可以使用任何情況,這種方式會為每一個內核支持的特性向用戶提問,如果用戶回答「y」,則把特性編譯進內核;回答「m」,則它特性作為模塊進行編譯;回答「n」,則表示不對該特性提供支持。
三、側重點不同
1.make oldconfig側重點:oldconfig是將當前內核源碼的新特性加入.config中去。
2.make defconfig側重點:defconfig是直接按照默認的i386_defconfig生成.config。
G. lzmaDecode 是什麼演算法
LZMA,(Lempel-Ziv-Markov chain-Algorithm的縮寫),是一個Deflate和LZ77演算法改良和優化後的壓縮演算法,開發者是Igor Pavlov,2001年被首次應用於7-Zip壓縮工具中,是 2001年以來得到發展的一個數據壓縮演算法。它使用類似於 LZ77 的字典編碼機制,在一般的情況下壓縮率比 bzip2 為高,用於壓縮的可變字典最大小可達4GB.
C++ 語言寫成的的 LZMA 開放源碼壓縮庫使用了區間編碼支持的 LZ77 改進壓縮演算法以及特殊的用於二進制的預處理程序。
數據流、重復序列大小以及重續序列位置單獨進行了壓縮。
LZMA 支持幾種散列鏈變體、二叉樹以及基數樹作為它的字典查找演算法基礎。
BCJ / BCJ2
BCJ / BCJ2 壓縮工具所附帶的 LZMA SDK 包括:在 X86、ARM、PowerPC、IA-64 以及 ARM Thumb 處理器上在壓縮之前跳轉目標進行歸一化處理。對於 x86 平台來說,這是一個近跳轉、近調用以及近條件跳轉需要從「向後跳 1665 位元組」這樣的機器語言歸一化到「跳轉到 5554」這樣的格式,但是短跳轉及短條件跳轉不需要進行這樣的處理。
7-Zip
盡管 7-Zip BCJ2 使用 32 位的偏移地址,但是 UPX 這樣的可執行文件壓縮工具當檢測到 16 位 DOS 二進制文件格式的時候仍然可以使用 16 位的數值。RAR 壓縮工具對 32 位的 x86 可執行文件以及 IA64 Itanium 可執行文件進行偏移地址壓縮。
BCJ / BCJ2 二進制文件壓縮
BCJ 與 BCJ2 之間的區別在於前者只將近跳轉及近調用目標地址轉換到歸一化的形式,而 BCJ2 只將 x86 平台下的近跳轉、近調用及條件近跳轉目標分別進行壓縮。
7-Zip 實現
在GNU LGPL通用公共許可證下發布的7-zip中使用的LZMA有以下幾個特點:
* 高壓縮比;
* 解壓縮程式碼較小:約 5 KB;
* 解壓縮時僅需少量內存 (取決於字典大小);
* 可變更字典大小 (最大 4 GB);
* 壓縮速度:在一部2GHz的處理器上運行,約可達到1MB每秒的速度;
* 解壓縮速度:在一部2GHz的處理器上運行,約可達10-20MB每秒的速度;
* 支援多線程、多核心(多處理器)和Pentium 4處理器的超線程(Hyper-Threading);
這個特點使得這個這個演算法的解壓過程非常適合於嵌入式系統應用的場合。
可移植性
一些微軟Windows專有的特性深深嵌入在源程序中,這樣就很難生成一個與 Unix 兼容的版本。但是,已經有兩個移植到類 Unix 平台的版本:
* p7zip 是一個或多或少地完全將 7z 及 7za 移植到 POSIX 的 7-zip 版本,這些系統包括 Linux、Solaris、OpenBSD、FreeBSD、Cygwin 等 Unix 系統以及 Mac OS X 和 BeOS等。
* LZMA Unix Port 是一個只移植了 LZMA 中代碼的版本,它是一個類似於 gzip 的基於數據流的壓縮工具。它不是一個歸檔工具,而只是一個普通的壓縮工具,並且由於它在沒有數據頭中沒有未壓縮文件大小的 UInt64 變數,所以它與 7-zip 生成的 LZMA 數據流中不同。7-zip 使用一種更加靈活的歸檔格式 7z,因此二者都不能互相使用對方生成的數據,至少在目前是這樣。
應用
使用或者支持 LZMA 的軟體有:
* Nullsoft Scriptable Install System
* Inno Setup
* cramfs and SquashFS, with applied patches
* lrzip ("long range zip", or "LZMA rzip")
* PyLZMA,Igor Pavlov 的 LZMA SDK 的 Python 語言介面
* FreeArc, 歸檔工具及 LZMA SDK 的 Haskell 語言介面
* 用於 Pascal 語言的 LZMA SDK
H. 怎樣 編譯 lzma kernel image
gnu tar的1.26版本開始支持lzma和xz壓縮,下載tar源碼編譯安裝就行了
希望回答對你有所幫助
I. 高分求一種壓縮演算法對文本進行壓縮和解壓的源碼
7-Zip 是一款 開源 軟體。大多數源代碼都基於 GNU LGPL 許可協議下發布。AES 代碼基於 BSD 許可下發布。unRAR 代碼基於兩種許可:GNU LGPL 和 unRAR 限制許可。
您可以在使用任何計算機上使用 7-Zip ,包括用在商業用途的計算機,不對 7-Zip 進行捐贈或支付並不影響您的使用。但是您可以通過 捐贈 的方式來支持 7-Zip 今後的發展。
7-Zip 主要特徵
更新了演算法來加大 7z 格式 的壓縮比
支持格式:
壓縮及解壓縮:7z、ZIP、GZIP、BZIP2 和 TAR (目前不支持RAR格式,是因為RAR是一種商業格式)
僅解壓縮:RAR、CAB、ISO、ARJ、LZH、CHM、WIM、Z、CPIO、RPM、DEB 和 NSIS
對於 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的壓縮比
7z 格式支持創建自釋放(SFX)壓縮檔案
集成 Windows 外殼擴展
強大的的文件管理
強大的命令行版本
支持 FAR Manager 插件
支持 69 種語言
通常使用 7-Zip 的 7z 格式能比使用 zip 格式的壓縮檔案小 30-70%。並且使用 7-Zip 創建的 zip 格式比大多數其它壓縮軟體創建的都小 2-10%。
7zip的官方主頁
http://www.7-zip.org/ 英文
http://7z.sparanoid.com/ 簡體中文
7zip的SF主頁
http://sourceforge.net/projects/sevenzip/ 在這里可以下載到所有的版本及其源代碼,以及LZMA演算法源代
J. linux內核代碼 匯編部分 疑問
沒研究過。
不過我記得 Linux 內核其實是兩部分,真正的內核本體是在內核文件的後部,一般都是壓縮的。之前是一個這個架構通用的啟動代碼,應該就是你這個匯編。
bootloader 的作用是把內核讀取到指定地址,之後運行這個內核,這樣運行的恰恰就是這段匯編寫的啟動代碼,這個啟動代碼的作用就是初始化環境,之後把後面本體的內核解壓縮並且寫到內存開始部分(忘了叫什麼名字)正好蓋掉 bootloader ,並且繼續運行。這樣這個運行的內核才是最終的 Linux 內核。(至少 x86 是這樣)
但每個 CPU 架構的啟動過程又有不同的地方。應該每個 CPU 都有自己特定的頭部啟動代碼。
你說這三個文件應該是有不同目的的。compressed 應該是解壓用的,kernel 裡面的應該是執行主要啟動過程的。那個 common.s 應該是「通用」部分代碼模塊。我的 comperssed 裡面還有很多 lzma 、gzip 、lzo 以及一些設備名稱的東西,應該都是「模塊」一類的吧。
你看看 Makefile 的編譯過程應該就能開除編譯調用的文件都是什麼了。
還有,你看源代碼最好看原版的,如果使用,那就去用針對性的。不然趕上找抽的人,可能針對某個開發板的代碼,會因為太過針對而不符合通用的一些規定或者習慣。