Linux 開發環境工具 下載網址大全

軟件集成開發環境(代碼編輯、瀏覽、編譯、調試)
Emacs            http://www.gnu.org/software/emacs/
Source-Navigator 5.2b2    http://sourceforge.net/projects/sourcenav
Anjuta             http://anjuta.sourceforge.net(可用yum安裝)
代碼索引工具
Cscope            http://cscope.sourceforge.net/
KScope            http://www.kde-apps.org
GLOBAL            http://www.gnu.org/software/global/(可用yum安裝)
調試器(GNU gdb的GUI前端)
DDD            http://www.gnu.org/software/ddd/
Insight 6.4.0        http://sourceware.org/insight/
KDbg            http://www.kdbg.org/
評測器(內存、性能、覆蓋等的profiler,類似IBM Purify)
Valgrind        http://www.valgrind.org/,FC5自帶3.1.0-2
ggcov(GNU gcov的GUI)    http://ggcov.sourceforge.net/
kprof(GNU gprof的GUI)    http://kprof.sourceforge.net/
KCachegrind        http://kcachegrind.sf.net
BoundsChecking        http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html
代碼靜態檢查工具(類似Windows平臺的PC-Lint)
Splint            http://www.splint.org/(可用yum安裝)
flawfinder        http://www.dwheeler.com/flawfinder/
代碼靜態測量工具
--暫缺,Windows上非開源的LineCount(http://liangs.autodebug.com/)統計C/C++/Java代碼還湊合。
PyMetrics(http://sourceforge.net/projects/pymetrics/)測量Python代碼複雜度。
http://www.chris-lott.org/resources/cmetrics/羅列了好些C static metric tools。
軟件構建系統(build system)
SCons            http://www.scons.org/(用yum安裝的版本太低)
CMake            http://www.cmake.org/
GNU Make        http://www.gnu.org/software/make/
交叉工具鏈
crosstool         http://www.kegel.com/crosstool/
代碼版本控制系統及相關工具
Subversion         http://subversion.tigris.org (用yum安裝)
WorkBench         http://pysvn.tigris.org/(pysvn的附帶物)
StatSvn            http://svn.statsvn.org/
mpy-svn-stats        http://mpy-svn-stats.berlios.de/
ViewVC            http://viewvc.tigris.org/
測試框架
CppUnit            http://sourceforge.net/projects/cppunit
CUnit            http://cunit.sourceforge.net/
代碼差異工具(比較/製作和應用補丁)
GNU diffutils        http://www.gnu.org/software/diffutils/
kdiff3            http://kdiff3.sourceforge.net/或者http://www.kde-apps.org(可用yum安裝)
代碼在線文檔
doxygen            http://www.stack.nl/~dimitri/doxygen/
離線文檔
DocBook            http://www.docbook.org
XMLMind            http://www.xmlmind.com/
代碼格式化
astyle(Artistic Style)    http://astyle.sourceforge.net/
indent            http://www.gnu.org/software/indent/
UML建模
ArgoUML            http://argouml.tigris.org


軟件工程事務(BUG等)跟蹤(類似IBM ClearQuest)
Trac            http://trac.edgewall.org/(基於Pythyon,用yum安裝)--感覺和BugFree一樣小巧
BugFree            http://www.1zsoft.com/(基於PHP+MySQL)--中小規模軟件適用
BugZilla        http://www.bugzilla.org/--配置複雜,使用麻煩
自動化持續構建與測試系統(類似IBM BuildForge)
BuildBot        http://buildbot.sourceforge.net/(基於Python)
Cabie            http://cabie.tigris.org/(基於Perl和MySQL)
系統級別測試框架
DejaGNU            http://www.gnu.org/software/dejagnu/(基於Expect,因而基於Tcl)
QMTest             http://www.codesourcery.com/qmtest/(基於Python)


Linux實用工具
yum            http://linux.duke.edu/projects/yum/,FC4自帶yum-2.3.2-7, FC5自帶2.6.1-0
wget            http://www.gnu.org/software/wget/
cURL            http://curl.haxx.se/
Wireshark(原名Ethereal)    http://www.wireshark.org,http://www.ethereal.com/(FC自帶版本較低)
NcFTP            http://www.ncftp.com/ncftp/
tftp和tftp-server    yum -y install tftp-server和tftp
rp-pppoe        http://www.roaringpenguin.com/penguin/open_source_rp-pppoe.php(FC自帶版本較低)
minicom            http://alioth.debian.org/projects/minicom/(FC自帶)
TightVNC        http://www.tightvnc.com/
Wine+IEs4Linux        http://www.winehq.org/
            http://www.tatanka.com.br/ies4linux/index-en.html
StarDict        http://stardict.sourceforge.net
fcitx            http://www.fcitx.org
KchmViewer        http://kchmviewer.sourceforge.net
kmhtConvert          http://www.kde-apps.org
永中Office        http://www.evermoresw.com
webmin            sourceforge.net,插件結構
Rsync            http://rsync.samba.org/
wxDFast            http://dfast.sourceforge.net/
FlashGot        http://flashgot.net/
Amarok            http://amarok.kde.org/(iTunes風格的音樂播放器,可yum安裝它以及mp3插件amarok-extras-nonfree。wma沒搞定)
xmms            http://www.xmms.org/(winamp風格的音樂播放器,可yum安裝它以及mp3/wma插件)
MPlayer            http://www.mplayerhq.hu/(Linux下最優秀的多媒體播放器之一,播放速度、支持的文件格式都出色,可yum安裝。我的可以播放MPEG4文件、row data和.mp3)
VirtualBox        http://www.virtualbox.org/
qRFCView        http://qrfcview.berlios.de/

打字練習軟件
Tuxtype, for Linux&Windows, http://tuxtype.sourceforge.net/
TypeFaster, for Windows, http://typefaster.sourceforge.net/

Python庫/工具
pyserial        http://pyserial.sourceforge.net/
pysvn            http://pysvn.tigris.org/
twill            http://twill.idyll.org/
pexpect            http://pexpect.sourceforge.net/
wxPython        http://www.wxpython.org/(可用yum安裝,名稱wxPython和wxPython-devel)
Snack            http://www.wanware.com/tsgdocs/snack.html
PIL            http://www.pythonware.com/products/pil/index.htm
ReportLab   http://www.reportlab.org/downloads.html
SIP            http://riverbankcomputing.co.uk/sip/index.php(可yum安裝,名稱Python-SIP)
dogtail         http://people.redhat.com/zcerza/dogtail/index.html
PyChecker        http://pychecker.sourceforge.net/
pylint            http://www.logilab.org/857/(Logilab.org還提供了基於Python的人工智能、科學計算等包)
Winpdb            http://www.digitalpeers.com/pythondebugger/
pydb            http://bashdb.sourceforge.net/pydb/
SPE            http://pythonide.stani.be/
Python數據庫方面有個規格Python Database API 2.0,有遵循此規格的對各現有DBMS(sqlite,mysql等)的包裝,如pysqlite,MySQLdb

python SIP/MGCP stacks
Shtoom            http://divmod.org/trac/wiki/ShtoomProject
Divmod Sine        http://divmod.org/trac/wiki/DivmodSine
PJSIP            http://www.pjsip.org/(Pjsip now supports Python abstraction for PJSUA-API...)
Sipx利用Python實現了SIP Forum Basic UA Test Suite(http://www.sipfoundry.org/sftf-user-guide.html)

C/C++庫/工具
wxWidgets        http://www.wxwidgets.org/(可用yum安裝其GTK綁定,名稱wxGTK和wxGTK-devel)
STL-Boost中文站點     http://www.stlchina.org/
NullHttpd        http://nullwebmail.sourceforge.net/httpd/        
PCRE            http://www.pcre.org/(Perl正則式兼容的,Windows版http://gnuwin32.sourceforge.net/packages/pcre.htm)
GNU Regex        http://directory.fsf.org/regex.html(GNU/Linux環境常用的兩個正則表示式包就是PCRE和GNU Regex,FC5上都裝了)
Libxml2            http://xmlsoft.org/(The XML C parser and toolkit of Gnome)
Xerces-C++        http://xml.apache.org/xerces-c/(A validating XML parser written in a portable subset of C++ by the Apache project.)
expat            http://expat.sourceforge.net/(XML parser written in C)
ACE   http://www.cs.wustl.edu/%7Eschmidt/ACE.html(跨平臺C++庫/框架)
APR    http://apr.apache.org/(跨平臺C庫)
NSPR    http://www.mozilla.org/projects/nspr/(跨平臺C庫)

KXML Editor        http://www.kde-apps.org
jedit            sourceforge.net,插件結構。用處不大。
jdk1.5            java.sun.com

SIP協議棧相關
OpenSER            http://www.openser.org/
SER            http://www.iptel.org/ser
sipX            http://www.sipfoundry.org/sipX
sipsak            http://sipsak.org/
SIPp            http://sourceforge.net/projects/sipp
xvidcore1.1.0        www.xvid.org    (XViD MPEG4 codec)
live            www.live555.com    (RTSP_Server)


編譯器/識別器生成工具
Bison            http://www.gnu.org/software/bison/
ANTLR            http://www.antlr.org/

ABNF工具
(1)Parser generators:
APG (ABNF Parser Generator)    http://www.coasttocoastresearch.com/
Yacker            http://www.w3.org/1999/02/26-modules/User/Yacker
(2)Test case generators:
abnfgen            http://www.quut.com/abnfgen/
(3)Verifiers:
There's Bill Fenner's ABNF checker  (for cut-and-pasted grammar), an ABNF parser in Perl  from Harald Alvestrand, and
Chris Newman's abnf.c, a widely used validator (here's its cut-and-paste frontend).

跨平臺的萬能編輯器Emacs配合CEDET/ECB/Cscope/GDB-UI這4個插件之後就成了一個完整的IDE。接觸Linux幾年來總是對它崇敬畏懼,這兩天下決心學習了一下,感覺(1)“學習曲線”並不是以前想象的那麼“陡”;(2)編輯功能確實像傳說中的那麼強。對它稍作定製,就能在寫代碼過程中自動應用特定編碼風格。http://www.chris-lott.org/resources/cstyle集中了許多C/C++風格規定。
我認爲Emacs適合於編輯自己的代碼(編輯功能很強,分析能力稍差),而Source-Navigator適合於閱讀別人的代碼(編輯能力稍差,分析能力很強)。
我試用了eclipse用來開發C/C++的cdt插件,對中等規模的工程(100-200個源文件)建立索引太慢,常常"Out of memory";調試器啓動時有常遭遇"No symble 'New' in current context"和"Connot access memory at address 0x0"之類的錯誤;代碼提示超級慢,10多秒無響應。我是在CPU2.6G,RAM1G的FC5上運行Eclipse3.2.1。大概eclipse的 cdt僅適用於"Hello,world"之類的C/C++工程,但eclipse依然是Linux/Windows平臺上開發Java相關工程的首選。
附cscope 的使用方法:一般的首先生成cscope.files文件,這個文件裏主要是要生成索引的文件列表,一般我都用的find命令生成(windows下可以考慮使用cygwin),比如我要在當前目錄下生成*.c*文件和*.h*文件的索引,那麼我可以鍵入:"find . -name "*.c*" -or -name "*.h*" > cscope.files",具體的find命令的用法不再闡述了。
生成cscope.files文件之後,在終端鍵入"cscope -k -q"就可以生成源代碼的索引了。
Cscope(http://cscope.sourceforge.net/)解壓後contrib/xcscope/xcscope.el是爲Emacs/XEmacs準備的。
CEDET(Collection of Emacs Development Environment Tools)網址http://cedet.sourceforge.net/。
ECB(Emacs Code Browser)網址http://ecb.sourceforge.net/。
GDB-UI(Emacs Mode for GDB)網址http://www.inet.net.nz/~nickrob/。
注:在安裝這些插件的過程中可能有些LISP文件和FC5自帶的Emacs的重複,直接覆蓋不會有啥問題。
我把cedet和ecb編譯後拷貝到emacs資源所在目錄(FC5自帶Emacs是/usr/share/emacs),然後編輯$HOME/.emacs增加如下設置:
;; Load CEDET
(load-file "/usr/share/emacs/cedet-1.0pre3/common/cedet.el")
;; Enabling various SEMANTIC minor modes.  See semantic/INSTALL for more ideas.
;; Select one of the following
(semantic-load-enable-code-helpers)
;; (semantic-load-enable-guady-code-helpers)
;; (semantic-load-enable-excessive-code-helpers)
;; Enable this if you develop in semantic, or develop grammars
;; (semantic-load-enable-semantic-debugging-helpers)

;; Load ECB
(add-to-list 'load-path "/usr/share/emacs/ecb-2.32")
(require 'ecb-autoloads)

;; Load Cscope
(require 'xcscope)

;; Some shortcuts
(global-set-key [f5] 'speedbar)
(global-set-key [f7] 'compile)



FC4 上面安裝Anjuta2.0.2的過程真是太艱難了。(1)Anjuta2下載頁面下方給出了Anjuta2依賴的一些包的名稱和位置,但這個提示並不夠顯眼(2)把Anjuta網站提供的gdl下載安裝後要配置pkg-config依賴的環境變量export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig(gdl-1.0.pc所在目錄)。而某些版本的gdl安裝之後並不產生相應的.pc文件!(3)FC4的glib版本太低,www.gtk.org給的鏈接用Firefox下載不了,用curl搞定了。(4) devhelp 0.11 --> Gtk+2.8 --> Pango with Cairo.
configure Devhelp:
checking for LIBDEVHELP... configure: error: Package requirements (
        gthread-2.0 >= 2.6.0
        gtk+-2.0 >= 2.6.0
        libglade-2.0 >= 2.4.0
        libwnck-1.0 >= 2.10.0
        gconf-2.0 >= 2.6.0
) were not met.

在FC5上config Source-Navigator 5.2b2一直到5.1.0都失敗:
checking if 64bit support is requested... no
checking if 64bit Sparc VIS support is requested... no
checking system version (for dynamic loading)... ../../../tcl/unix/configure: line 6020: syntax error near unexpected token `)'
../../../tcl/unix/configure: line 6020: `       OSF*)'
configure: error: ../../../tcl/unix/configure failed for unix
Configure in /home/kenny/WorkEvnInit/sourcenav-5.1.0/snbuild/tcl failed, exiting.
後來在sourceforge.net此項目的論壇上找到一個patch搞定了,但窗口最大化仍然有問題。


/usr/local/lib/pkgconfig/gdl-1.0.pc
sourcenav在FC4上編譯遇到兩個錯誤(在Redhat9上順利編譯),都是說不支持"-fwritable-strings"選項,把對應Makefile修改一下注釋掉這個選項即可.
make[3]: Entering directory `/home/kenny/WorkEvnInit/sourcenav-5.2b2/tix/unix/tk8.3'
gcc -pipe -c  -fwritable-strings
make[3]: Entering directory `/home/kenny/WorkEvnInit/sourcenav-5.2b2/libgui/src'
gcc -DHAVE_CONFIG_H -I. -I. -I.. -fwritable-strings

Source-Navigator自2004年3月發佈5.2b2以來沒有再更新。http://developer.berlios.de/projects/sourcenav/嘗試繼續維護它。

Linux 上除了SourceNavigator之外,另一個較好的C代碼編輯、瀏覽工具是KScope在http: //kscope.sourceforge.net/。最新版1.3.4把我的GCC(FC4自帶)版本列入黑名單。FC5上安裝1.4.0成功。 KScope是Cscope的前端,它的代碼導航、外觀、語言支持等各方面都較SourceNavigator遜一籌。
Windows上流行使用SourceInsight,不是免費的,且代碼導航功能不如SourceNavigator。

GNU GLOBAL is a source code tag system that works the same way across diverse environments. You can locate a specified object in the source files and move there easily. It is useful for hacking a large project containing many subdirectories, many #ifdef and many main() functions. It is similar to ctags or etags but is different from them at the point of independence of any editor. It runs on a UNIX(POSIX) compatible operating system like GNU and BSD.
有人用GLOBAL分析Linux內核以自動生成HTML(例如http://joyfire.net/kernelsrc/),其文檔功能類似Doxygen,但似乎可以搭配Vim等編輯器來瀏覽代碼。我認爲其代碼導航功能不如SourceNavigator。

當前Linux平臺上的GDB前端有DDD,Insight,KDbg等。DDD是一個非常流行的調試器,Fedora Core 4附帶了它。Insight是Redhat的GNUPro開發套件之一,是gdb的Tk包裝(版本號與gdb版本號完全一致),可與 SourceNavigator集成。KDbg是gdb的KDE風格的GUI。DDD雖然GUI稍稍難看(Tk和KDE風格我也不太喜歡,基於KDE的應用在關閉時調用KNotify太慢了),但功能最強。三者中只有DDD支持的後臺調試器不侷限於gdb;也只有DDD提供了gdb的CLI,這使得其非常靈活(例如增加一個函數斷點,命令break func就OK,而不像用菜單指定文件名和行號那樣煩瑣)。Insight調試多線程程序時暫停常常使得Insight失去響應。KDbg是gdb的前端,可以瀏覽過去打開的源文件,這是個優勢。就像其簡介中所說的,你不能期望它能做的比gdb更多,所以它在許多方面都比DDD差:(1)查看變量的值,如果變量形式較複雜,則鼠標放在其上不能顯示其值或者顯示其值爲0,只得麻煩地寫一個監視表達式。(2)不能像DDD的數據窗口那樣可視化地顯示一個結構體、數組,必須爲特定成員寫一個完整的監視表達式。(3)調試過程中不能修改變量值、挪動執行點(這些功能有時很有用)。(4)主窗口以及打開的各個窗口(本地變量、內存等)在FC5的任務面板上縮成一個標籤,切換起來很是費事。

TotalView(http://www.etnus.com/)號稱自己是多核時代地球上最好的多線程/進程調試器。有試用版,不過我想不出來我以後什麼時候會覺得gdb不夠強。

Valgrind is an award-winning suite of tools for debugging and profiling Linux programs. ElectricFence(http://perens.com/FreeSoftware/ElectricFence/)聲稱自己不如 Checkergcc(http://www.gnu.org/software/checker/checker.html),而Checkergcc 又由於Valgrind的出現而退役。一句話:當前大家公認Valgrind是最接近IBM商業產品Purify的開源的內存/性能評測工具。

C/C ++代碼覆蓋、性能profiling工具一般基於GNU的gprof和gcov。(還有一類基於模擬器的profiling工具,如IBM Purify, Valgrind。KCahcegrind是Callgrind,OProfile等的GUI前端。)我知道的有ggcof,kprof,lcov。 lcov是Linux Testing Project工具之一,見http://ltp.sourceforge.net/tooltable.php上的工具列表。這兒還有壓力測試、WEB Server測試等許多工具。在http://www.testingfaqs.org分類歸納了多種軟件測試工具。

運行期間棧以及數據段的溢出比堆溢出更難以發現、定位。絕大多數安全工具聚焦於防止棧溢出覆蓋函數返回地址從而阻止了可能的攻擊。Avaya 實驗室發佈libsafe 2.0,增加了防止格式化字符串攻擊功能,目前可以保護系統免受兩種攻擊'buffer overflow' and 'format string'. Libsafe在自己的strcpy/printf等函數即將導致棧幀處被覆蓋時終止程序,從而防止被入侵。其技術思路是:採用 Interposition技術用自己的strcpy/printf等函數替換C標準庫函數(ElectricFence也採用此技術替換堆內存相關函數);在自己的函數中找到FP位置(函數_libsafe_stackVariableP()),同時判斷給定指針是棧上還是堆上;堆上指針直接調用C標準庫函數;棧上指針則在邊界檢查通過後調用C標準庫函數,檢查未通過就exit。很多細節限制了其只能用於特定平臺Linux並且被保護軟件是用gcc編譯。但我的目的是發現所有數組越界錯誤,要求更嚴格。可能只有GCC的補丁BoundsChecking(http: //www.doc.ic.ac.uk/~phjk/BoundsChecking.html,在SF上有下載http: //sourceforge.net/projects/boundschecking/)能做到這一點。當前版本(for GCC4.0.2)僅支持C。我反彙編了它編譯出來的executable,發現棧上的字符數組分配由10多條指令加call __bounds_add_stack_object 來做,在最後多分配了1字節用於保護。堆上內存分配的函數malloc也以__bounds_check_malloc代替。這類補丁最大的問題是產生的 executable運行速度奇慢,尤其是指針操作密集的測試成百上千倍地慢。
嘗試了兩個例子,效果很好。但webcam工程鏈接期大量錯誤,如:src/protocols/call/sip/src/misc/sipcopy.c:774:對‘__bounds_check_free’未定義的引用。是不是我的gcc編譯不對勁?還是ld不對勁?

Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

Flawfinder, a program that examines source code and reports possible security weaknesses (``flaws'') sorted by risk level. It's very useful for quickly finding and removing at least some potential security problems before a program is widely released to the public. Flawfinder is written in Python.
檢查當前目錄下(遞歸地)所有C/C++代碼,輸出檢查結果:
flawfind --quiet --html . >flaws.html
Error: File ended while in string.

除了Splint和Flawfinder之外,常用的開源的C/C++代碼靜態檢查工具還有RATS(http: //www.fortifysoftware.com/security-resources/rats.jsp), ITS4(http://www.cigital.com/its4/)。此外,Open Source Quality Project(http://osq.cs.berkeley.edu/)組織了好幾個這方面的項目。

SCons是一個與GNU make, qmake, CMake以及Ant類似的軟件構建管理工具。SCons is a next-generation software construction tool, or make tool--that is, a software utility for building software (or other files) and keeping built software up-to-date whenever the underlying input files change.
Scons可以完全替代 GNU Automake/Autoconf。Automake/Autoconf腳本configure的作用有兩個:一是平臺環境(頭文件、數據類型、庫等)檢測(交叉編譯時這部分很重要),二是定製軟件特性(例如Minigui的configure的--enable-clipboard選項表示支持剪切板)。scons手冊的“Multi-Platform Configuration (Autoconf Functionality)”和“Controlling a Build From the Command Line”兩章分別論述了scons是如何支持上訴功能的。
注意:安裝幾個版本的scons可能導致混亂:
[[email protected] lib]# scons -v
SCons by Steven Knight et al.:
        script: v0.96.95.D002, 2007/02/14 11:01:59, by knight on roxbury
        engine: v0.96.1.D001, 2004/08/23 09:55:29, by knight on casablanca
Copyright (c) 2001, 2002, 2003, 2004 The SCons Foundation
我發現在/usr/lib下有scons和scons-0.96.92兩個目錄。我刪除scons目錄,就解決了這個問題:
[[email protected] lib]# rm -fr scons
[[email protected] lib]# scons -v
SCons by Steven Knight et al.:
        script: v0.96.95.D002, 2007/02/14 11:01:59, by knight on roxbury
        engine: v0.96.95.D002, 2007/02/14 11:01:59, by knight on roxbury
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 The SCons Foundation
修改/usr/local/bin/scons文件,使得其輸出使用的engine位於何處:
sys.path = libs + sys.path
import SCons.Script
print SCons #自己加的
SCons.Script.main()
輸出信息如下:
<module 'SCons' from '/usr/local/lib/python2.5/site-packages/SCons/__init__.pyc'>
scons 的README指出“Note that, by default, SCons does not install its build engine library in the standard Python library directories.” 以後別忘了加"--standard-lib"選項。
Java項目的構建現在主要用Ant或Maven來做,這兩個工具目前也完全侷限於Java項目。我現在不做Java項目,這些東西對我毫無用處,所以就沒有深究它們。
技巧:中文環境下gcc給出的warning和error都是中文的,不便於在網上找資料,也不便於在Emacs查看。怎樣讓gcc輸出英文的信息呢?一個麻煩的辦法就是每次運行scons之前先執行"export LC_ALL=en_US.UTF-8"。其實可以這麼做:在SConstruct文件設置好編譯環境env之後,在導出env之前,添加如下一行以修改編譯過程中的locale:
env['ENV']['LANG'] = "en_US.UTF-8"

SCons可以結合distcc (http://distcc.samba.org/)和ccache節省大型軟件項目的編譯時間。

CMake (http://www.cmake.org)是一個Makefile生成器(作用相當於GNU atuotools鏈),它能爲許多native build system(如GNU make, MS VC6, MAC OS Xcode等)生成配置文件。KDE4這個大型軟件初期嘗試了SCons以解決GNU atuotools鏈的各種弊端,不過最終選擇了CMake。其中的緣由請看"Why the KDE project switched to CMake",  http://lwn.net/Articles/188693/

" 跨平臺的編譯工具,其中最有名的兩個是 CMake 和 SCons。CMake 和 SCons大概代表了新一代跨平臺編譯工具的兩種方向。第一種 (CMake) 是延續並改良傳統 automake, autoconf 工具鏈,將之合爲一體,但最終仍然生成 Makefile, Visual Studio 的 .sln,Xcode 的 .xcodebuild 文件,依賴現有編譯工具 (make, nmake, vcbuild, xcodebuild) 來編譯;第二種則是完全消除現有編譯工具的調用,直接調用編譯器,scons 就屬於這一類。從人氣上來說,反倒是走改良路線的 cmake 比 scons 好一些..."

按照《Building Embedded Linux Systems》極其詳盡的指導,爲嵌入式系統開發構建GNU交叉工具鏈也很困難:gcc/glibc/binutils/kernel版本之間的配合,特定版本的特徵(如GCC3.2開始應該這麼做而不是那麼做),還要考慮補丁...手工來做非常耗時且不大可能成功(碰到問題看文檔和使用Google也不一定能搞定)。用crosstool(http://www.kegel.com/crosstool/,另外在http: //www.freaknet.org/martin/crosstool/有一些解釋、補丁等),只需要你有個Linux PC能上網,一個命令(如demo-arm.sh)下去就行。有時間可以深入研究一下這個工具。Building a gcc / glibc cross-toolchain for use in embedded systems development used to be a scary prospect, requiring iron will, days if not weeks of effort, lots of Unix and Gnu lore, and sometimes willingness to take dodgy shortcuts.
Linux內核的ARM補丁、ARM工具鏈都可在http: //www.arm.linux.org.uk/developer/上找到,這是Linux ARM架構的最權威站點。另外可能還需要特定芯片廠商提供的補丁,例如3615使用的TI DM320有內核補丁設置了各設備在Flash的地址。
注意:(1)對一個項目而言,升級交叉編譯工具鏈後,製作的ramdisk內也要以新的C動態庫替換掉老的,否則可能導致兼容性問題如程序運行不起來。(2)要使得 toolchain識別用戶添加的庫,把庫放在arm-linux/arm-linux/usr/lib。爲了運行時能找到這個庫,製作的ramdisk 也必須包含這個庫。(3)如果硬件平臺沒有浮點支持,所以在crosstool的arm.dat文件最後添加如下兩行:GCC_EXTRA_CONFIG ="--with-float=soft"和GLIBC_EXTRA_CONFIG="--without-fp";或者不使用demo-arm.sh而是demo-arm-softfloat.sh(注意這兩個腳本可能在GCC版本方面並不同步)。在交叉工具鏈完成後可以用"arm-linux-gcc -v"查看配置情況。(4)默認的目標是arm-unknown-linux-gnu,可以在arm.dat中將TARGET設置爲"arm- linux"使得編譯出來的GCC名字爲arm-linux-gcc。

編譯Linux內核,如果目錄層次過深,可能出現如下錯誤:
scripts/mkdep -- `find /home/kenny/svn_LRSH/ipcam/trunk/LR3615_BII/kernel/linux-2.4.26_LRSH/include/asm /home/kenny/svn_LRSH/ipcam/trunk/LR3615_BII/kernel/linux-2.4.26_LRSH/include/linux /home/kenny/svn_LRSH/ipcam/trunk/LR3615_BII/kernel/linux-2.4.26_LRSH/include/scsi /home/kenny/svn_LRSH/ipcam/trunk/LR3615_BII/kernel/linux-2.4.26_LRSH/include/net /home/kenny/svn_LRSH/ipcam/trunk/LR3615_BII/kernel/linux-2.4.26_LRSH/include/math-emu /( -name SCCS -o -name .svn /) -prune -o -follow -name /*.h ! -name modversions.h -print` > .hdepend
/bin/sh: scripts/mkdep: 參數列表過長
make: *** [dep-files] 錯誤 126
可以把內核代碼放到淺一些的目錄,或者爲內核代碼根目錄做個軟鏈接。
爲3615/3621編譯Linux內核時,注意修改內核代碼drivers/mtd/maps/dm320map.c。

[使用distcc 縮短編譯時間]distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile.
The main feature required by distcc is that the compiler must be able to run the preprocessor separately, and then compile the preprocessor output from a file. This was a basic part of the original design of C, but some compilers seem to have lost the ability to do this. Secondarily, distcc is currently hardcoded to suit gcc's behaviour and command-line syntax, so only compilers that act like gcc will work. This could in principle be changed.

patch文件中指令都是面向單個文件內容比較的:增加的文件所在目錄不存在則創建它;打補丁後空文件及其所有空的祖先目錄都被刪除。請看patch手冊中選項"-E"和Caveats一節。
Tips for Patch Producers
To create a patch that changes an older version of a package into a
newer version, first make a copy of the older and newer versions in
adjacent subdirectories. It is common to do that by unpacking tar
archives of the two versions.
To generate the patch, use the command diff -Naur old new where old
and new identify the old and new directories. The names old and new
should not contain any slashes. The -N option lets the patch create
and remove files; -a lets the patch update non-text files; -u
generates useful time stamps and enough context; and -r lets the patch
update subdirectories. Here is an example command, using Bourne shell
syntax:
diff -Naur gcc-3.0.3 gcc-3.0.4 > patch_gcc_304_to_303
Tell your recipients how to apply the patches. This should include
which working directory to use, and which patch options to use; the
option -p1 is recommended. Test your procedure by pretending to be a
recipient and applying your patches to a copy of the original files.
For example, place patch_gcc_304_to_303 at the directory in which
gcc-3.0.3 lies, using Bourne shell syntax:
cd gcc-3.0.3
patch -p1 < ../patch_gcc_304_to_303

Kompare 是KDE自帶的一個文件/目錄比較工具,比較大目錄太慢了,也沒有合併功能。我上網瞭解到在這方面的好工具有Kdiff、Meld和xxdiff。 Meld的沒有做漢化,許多菜單、按鈕的文字顯示不出來或者是亂碼。xxdiff還沒有嘗試過。Kdiff3還有windows版本。

Kdiff3 is very good for large merges, automatic merge facility.
Meld is a visual diff and merge tool. Meld is written with the excellent pygtk toolkit.
kdiff3-0.9.90-1.fc.i686.rpm 要求libstdc++.so.6(GLIBCXX_3.4.6),對應的FC4平臺RPM是libstdc++-4.0.2-8.i386.rpm,但 FC4光盤上只有4.0.0,網絡速度太慢,下載不了!:( kdiff3-0.9.89把我的編譯器列入了黑名單。最後用0.9.88終於順利安裝了。運行起來感覺不錯!

Subversion(簡稱svn)是經典的開源的版本控制系統cvs的替代物。有個工具cvs2svn可以轉換CVS庫到SVN庫。
SVN客戶端GUI非常豐富。Windows上最流行TortoiseSVN(http://tortoisesvn.tigris.org/),好用且功能強。其他大多是跨平臺的,以下是我嘗試過的:
RapidSVN    http://www.rapidsvn.org/(基於wxWidgets,在FC6編譯失敗,只得用yum安裝。在中文環境下總是工作不正常)
KdeSVN    http://www.kde-apps.org(可yum安裝,功能少,在中文環境下工作不正常)
QSvn    http://ar.oszine.de/projects/qsvn/(要求QT4且功能少--尤其是缺乏Blamme功能)
SmartSVN   http://www.syntevo.com/smartsvn/(僅提供試用版,基於Java--自然內存和速率方面表現差。注意它要求使用SUN的JRE)
我推薦WorkBench(pysvn附屬物,基於wxPython)。它功能和速度方面都不錯,並且在中文環境下能很好地工作。注意:(1)如果已安裝的 wxPython版本在wb_main.py選擇的wxPython版本列表內,則需要添加進去。(2)如果WorkBench工作不正常,很可能是 pysvn與系統SVN庫有衝突。

StatSvn基於著名的StatCvs的SVN版本,開源,以Java編寫。它能夠對整個SVN庫做統計,包括:每作者提交數、擁有代碼行數等等。試用了一下,感覺很不錯!(StatSvn手冊指出:由於SVN日誌文件的特性,第一次統計較慢。我針對 LR3615_WEBCAM工程[10萬多行]第一次統計,耗時70多分鐘。)另外要注意:FC5默認JRE(即gij)沒有提供Graphics2D等庫,這將導致JVM拋出異常。安裝SUN提供的JDK1.5.0即可解決此問題。
[[email protected] statsvn-0.2.0]$ java -jar statsvn.jar /home/kenny/sw_3615/svn.log /home/kenny/sw_3615

mpy-svn-stats: Very simple and easy to use Subversion statistics generator written in Python. (http://mpy-svn-stats.berlios.de/)是另一個Subversion庫分析工具。SipX項目的統計信息(http: //www.voiceworks.pl/sipxpbx-stats/)就是由此工具生成的。

ViewVC是一個基於web的CVS、 SVN代碼倉庫瀏覽工具。它最早是從cvsweb發展而來的,cvsweb是用Perl編寫的, viewvc原作者Greg Stein發現很難在此基礎上擴展新的功能,於是用Python重新實現,並命名爲viewcvs。後來又加入了對SVN代碼倉庫的支持,爲反映這一變化 viewcvs重命名爲viewvc。viewvc可以以獨立的程序運行(standalone.py),也可以以cgi方式運行於支持CGI的web服務器,還可以以ASP模式運行於IIS,以mod_python模式運行於Apache。viewvc通過本地文件系統訪問代碼倉庫,所以它必須安裝在運行CVS或SVN代碼倉庫的同一服務器上。運行viewvc需要很多第三方軟件,具體需要的依賴軟件取決於啓用功能和運行平臺兩大因素。viewvc除了支持CVS代碼倉庫瀏覽功能,還支持
1)SVN代碼倉庫瀏覽功能
2)代碼語法加亮、顏色標註
3)CVS代碼修訂歷史圖形顯示
4)CVS代碼代碼提交動作的記錄、查詢

此外還有FishEye(http://cenqua.com/fisheye/)等商業的代碼庫分析工具。

程序代碼美化工具astyle可美化C/C++/Java。astyle有幾個成套的的風格定義:ansi java linux kr...不必記住複雜的縮進具體選項。indent(gcc附帶的一個標準工具)只能美化C代碼。專門針對Java代碼的有CheckStyle(免費,http://checkstyle.sourceforge.net/)和Jacobe(商業,http: //www.tiobe.com/jacobe.htm)等。
astyle 1.19有個BUG:如果#ifdef 下一行以{開頭,則{被調整到#ifdef行最後,這必然導致編譯失敗。
indent 也不完美:(1)處理dspcode.h類似文件時間極長,把數組每一項單獨作爲一行導致頭文件行數極多。Frank說處理dspcode.h類似文件之後導致編譯失敗。(2)在#else之後自動加了/*,隨後多了一行*/。(3)有時候格式化比較亂甚至導致編譯失敗。
Windows平臺上有試用版的SourceFormatX。
結論:不要企圖把整個工程的源代碼一次性格式化,哪個C文件格式實在太亂了再說。
#/bin/sh
# -kr    Kernighan & Ritchie style
#     -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0
#     -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs
#     -nprs -npsl -saf -sai -saw -nsc -nsob -nss
# -nbad   The '-bad' option causes `indent' to force a blank line after every
# block of declarations.  The `-nbad' option causes `indent' not to force
# such blank lines.    
# -cliN Case label indent of N spaces.
# -bliN Indent braces N spaces.
# -cbiN Indent braces after a case label N spaces.
# -nut Use spaces instead of tabs.
indent -kr -bli0 -cbi4 -nut $1

Bison 是替代yacc的語法解析器. 有時間研究一下!還有Boost Spirit框架!

pyserial是一個Python串口庫,包裝了Python標準庫termios。雖然用C操作串口並不難,但要考慮一些細節,遠不如用pyserial簡單和方便。在編寫測試代碼、原型代碼涉及串口通信時可以考慮它。
wxPython 是wxWidgets的Python綁定,類似的Python GUI庫還有Tkinter(Python事實上標準的GUI toolkit,基於Tk)、PyGtk(基於GTK+)、PyQt。經過一番權衡(網上有個《知名GUI庫簡評》),我決定採用wxPython。我認爲它的跨平臺性非常好,且使用非常簡單(安裝包就帶有大量的範例,這是最好的參考資料)。
The pysvn project's goal is to enable Tools to be written in Python that use Subversion.

Snack 是一個Python庫,用於創建簡單的基於文本的用戶界面。紅帽子的Linux在安裝、配置期間出現的那些非常像GUI但又不具有普通窗口控制功能的界面,就是基於文本的用戶界面,它們使用了Snack。例如:配置系統時區的命令/usr/sbin/timeconfig包裝了Python腳本/usr/share/system-config- date/timeconfig.py,時區列表/usr/share/zoneinfo/zone.tab。
Snack is a python library based on newt that can be used to create a simple text based User interface. This is the package that was used by Red Hat to create their installation along with a number of configuration tools. It is an ideal platform upon which to create installation and configuration scripts, particularly if you don't want to rely on X, or you want to avoid complexity.
還有Python包也叫做Snack,在http: //www.speech.kth.se/snack/。The Snack Sound Toolkit is designed to be used with a scripting language such as Tcl/Tk or Python. Using Snack you can create powerful multi-platform audio applications with just a few lines of code.
用於創建基於文本的用戶界面的Python包並不只有Snack。“某一類 Python 應用程序最好使用交互式用戶界面,這樣可以消除圖形環境的系統開銷或複雜性。交互式文本模式程序(在 Linux/UNIX 中),例如封裝在 Python 的標準 curses 模塊中的ncurses 庫,正是您所需要的。 Tinter 是構建在 curses 上的高級窗口小部件的一個模塊。Tinter 支持按鈕、文本框、對話框和進展欄。一種沒有充分引起公衆注意的(並且難以捕捉到的) ncurses 和其它各種封裝器的備用產品結合了slang 和newt 以及 python 封裝器模塊snack。slang 的功能與 curses 一樣,而且newt 的功能與Tinter 一樣。 ”


pexpect(http://pexpect.sourceforge.net/) is a pure Python Expect-like module. Pexpect makes Python a better tool for controlling other applications.Python-dev郵件列表http://mail.python.org/pipermail/python- dev/2002-November/thread.html對此有討論。

twill is a simple scripting language intended for programmatic or automated browsing of Web sites. twill strives to be a complete implementation of a Web browser, omitting only JavaScript support. It includes support for cookies, basic authentication, and most (all?) HTTP trickery, including HTTP-EQUIV redirects. Please let me know if you find a situation where it doesn't work! It's written in Python. It's Python API is for Python programmers interested in using twill from Python.
twill還支持斷言響應中含特定錯誤碼、特定URL、特定文本等。twill還可以用於壓力測試,twill-fork基於Python的os.fork()。其文檔還列舉了許多其他WEB測試相關的工具(要是twill實在不合適,可以看看它們)。
twill 支持cookie、基本認證等許多東西,唯一不爽的是不支持JavaScript(基於Java的HttpUnit支持一些JavaScript)。 IPCam項目的網頁一般在HTML最後用一段簡單的JavaScript腳本設置表單各域的值。好在它們的Javascript腳本和Cookie都非常簡單,可以用Python的正則表達式來提取它們,然後修改twill解析出來的表單相應域的值。IPCam項目的網頁用這樣一段JavaScript 腳本來設置Cookie和跳轉:
<script language=javascript>document.cookie="admin_999999;path=/";parent.location.href="../web/system_1.asp";</script>
twill忽略這一段,所以後繼網頁都訪問不了了!可以先用正則表達式解析出Cookie值並存入一個文件,然後用load_cookies命令加載這個Cookie...
服務器返回的相應在HTTP頭中這樣設置Cookie:
Set-Cookie: S=gmail=ZlqdB1eh50LLOD2oHQy-AA:gmail_yj=wYXY0sDUzqa7YGNlHwld8w:gmproxy=r8SkXMoAtqc:gmproxy_yj=0nwuEpFAlkk; Domain=.google.com; Path=//r/n
twill這樣表示Cookie:
<Cookie SID=DQAAAGkAAADjG8D7QJIQvqfILHXEzSkXTkoj8CjBwoANMpmfSGsZi2hdp1WmaECgfVyfgGihzZD_aOj30vO_UFH4U6aUrQ3OOF18ePC9owraK0-SVfGxjBwrARvxeWKUDP5QXFG40ehFrk8ynkZ1W7NHI4xz7CUt for .google.com/>
twill存儲所有cookies爲一個文件,以這樣的格式:
#LWP-Cookies-2.0
Set-Cookie3: SID="DQAAAGkAAADjG8D7QJIQvqfILHXEzSkXTkoj8CjBwoANMpmfSGsZi2hdp1WmaECgfVyfgGihzZD_aOj30vO_UFH4U6aUrQ3OOF18ePC9owraK0-SVfGxjBwrARvxeWKUDP5QXFG40ehFrk8ynkZ1W7NHI4xz7CUt"; path="/"; domain=".google.com"; path_spec; domain_dot; discard; version=0

The Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats, and provides powerful image processing and graphics capabilities. SVN統計工具mpy-svn-stats的圖片操作基於它創建RGB模式的PNG圖片。Python圖像處理方面的極好文章:Python and Image processing位於http://python.cn/pipermail/python-chinese/2005- October/016910.html。

ReportLab Toolkit是用於創建PDF文檔的Python工具包,依賴於PIL。

Trac: Simple, web based, intuitive bug and change tracking. Has a good interface with Subversion. Click around and view a current project using TRAC<http://trac.wordpress.org/>.
說到版本控制,也順便提一下目前越來越熱的 Trac,她是一個非常好的融合了wiki、故障跟蹤、版本管理的軟件項目管理平臺。使用Python編寫,版本管理採用subversion, 不過採用的是subversion自帶的Swig-python接口。其他的數據存儲在sqlite中,系統採用clearsliver頁面模板引擎編寫。

wget的"-r"選項遞歸方式下載整個web站點,“-nc”表示不要重複下載同一文件,“-X”的選項值是要排除的目錄列表。
下載/離線瀏覽整個網站的工具非常多...Linux下有個商業版本的HTTrack V3.40 For Linux(http://www.httrack.com/,一直連接不上). 一個容易使用的站點鏡像軟件,能將網站傳送到本地目錄,並且會將所有相關鏈接重新組織,以便順利的離線瀏覽。KHttrack(http: //www.nongnu.org/khttrack/index.html)是HTTrack的KDE包裝。

cURL is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, TFTP, HTTP, HTTPS, TELNET, DICT, FILE and LDAP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.

Fedora Core操作系統提供了ftp客戶端工具/usr/bin/ftp,但是這個工具使用起來不是非常方便。本文介紹一種在世界上廣泛使用的ftp命令行客戶端軟件ncftp,它提供更方便、快捷、強大的功能,使我們在使用ftp服務的時候更得心應手。ncftp廣泛應用於各個版本的Linux上。ncftp 與傳統的ftp相比,主要有以下改進或變化:
1、子目錄下載,採用遞歸的方法,下載整個目錄及其子目錄。
2、支持斷點續傳。一次傳輸沒有完成,下次可以接着傳輸未完成的文件。
3、匿名ftp自動登錄。目前大部分ftp站點都可以匿名登錄,ncftp可以自動登錄(默認方式)。
...

wxDFast也是一個圖形化的下載工具,支持多線程、斷點續傳等功能,基於wxWidgets,最大特點是下載速度快。
FlashGot - Best Firefox Download Manager Integration.一個下載管理器,將瀏覽器(Mozilla/Firefox/Flock/Thunderbird)與一些下載工具(GUI的 wxDFast/D4X/KGet等,CLI的wget/cURL/WellGet[適合於邊下載邊播放電影]等)集成起來,使得下載操作就像 Windows下用netants/FlashGet那樣簡單。


我在Linux下經常下載一些新鮮軟件嘗試,但是瀏覽器 Firefox常常打不開鏈接或者下載失敗,尤其是隔了防火牆訪問SourceForge之類的較慢站點;而這些鏈接在Windows下是可以下載的,雖然速度慢一點。用yum升級系統,常出現“http: //fedora.cs.wisc.edu/pub/mirrors/linux/download.fedora.redhat.com/pub/fedora/linux/core/updates/5/i386/vim-minimal-7.0.042-0.fc5.i386.rpm: [Errno -1] Header is not complete.”類似的錯誤。而gFTP這樣的FTP客戶端GUI常常這兒或那兒工作得不對勁。用NcFTP或者cURL一般可以解決這些問題。(注:FTP的URL舉例:ftp://book:[email protected]/book_h/20060828/c69318f9-1bcb- 4a11-8808-1daca711db4d.chm)

CHM是Windows平臺幫助文件標準格式,有許多電子書籍(甚至許多關於 Unix/Linux的)以此格式發佈.Linux平臺上有一些閱讀/編輯此格式的工具.KchmViewer基於Qt,獨立於KDE/Gnome.我在 make時參照README加上了選項"--with-kde"才編譯成功,否則因爲ld找不到Xext庫而失敗.可以把.chm格式關聯到 KchmViewer,在FedoraCore4下面這麼做:右鍵單擊一個文件,然後選屬性,再點打開方式,選擇添加,然後在自定義命令裏面自己寫上 kchmviewer即可.

mht是IE另存的一種Web Archive格式,它將html/圖片等存儲在單一文件內. Linux平臺的kmhtConvert可以將其轉化爲Konqueror(KDE的一個瀏覽器)支持的war格式(再把此格式關聯到 Konqueror). Konqueror中這樣創建war:工具->存檔網頁.kmhtConvert實現了以下格式的相互轉化:(*.mhtml, *.mht, *.eml, *.war). 大家都知道網頁格式一般爲.htm,.html,.shtml三種格式,其中三種格式的網頁代碼都是通用的.SHTML和HTML的區別在於shtml是一種採用了Server Side Include(SSI,服務器端包含指令)技術的文件。大多數(尤其是基於Unix平臺)的WEB服務器如Netscape Enterprise Server等均支持SSI命令。

和Windows相比,Linux上的詞典、翻譯工具比較少。星際譯王StarDict是利用GTK (GIMP TOOLKIT)開發的國際化的、跨平臺的詞典工具,它也可以安裝在Windows上,不過,安裝前首先要安裝GTK+環境。星際譯王的詞典要在安裝完程序之後才能下載和設置。官方網站上的這個頁面:http: //stardict.sourceforge.net/Dictionaries_zh_CN.php,就有很多中英詞典的下載地址。To install these tarball dictionaries, do this:(1)tar -xjvf a.tar.bz2 (2)mv a /usr/share/stardict/dic.我下載安裝了朗道英漢字典5.0,朗道漢英詞典5.0,牛津辭典。


你可以在 http://www.xml-dev.com/blog/#19 找到許多好用的XML編輯器。
KXMLEditor是基於KDE的XML顯示和編輯工具。啓動命令kxmleditor。
一些公司也發佈比商業版功能少但免費的版本:Eclipse的XMLBuddy插件標準版(www.xmlbuddy.com/,提供以下編輯功能:格式化、用戶可配置的語法着色、DTD 驅動的代碼輔助、驗證以及同步的提綱視圖格式化功能),Windows平臺的XMLSpy家庭版(Home Edition,www.altova.com/),基於Java的XMLmind標準版(Standard Edition,www.xmlmind.com/,網上有中文版)。只發布商業版本的有oxygen(www.oxygenxml.com/)
Rather than writing DocBook XML documents by hand using a text editor like notepad or vi, it is often conveinent to use an XML editor with a point-and-click graphical user interface (GUI). This tutorial covers the use of one such editor, XMLMind's XML Editor (XXE), to create DocBook XML documents.

ArgoUML是100%基於J2SE開發的UML建模工具,支持UML1.4所有7類圖,支持導入導出XMI,支持導出成PNG等多種圖形文件,支持代碼生成,不支持逆向工程,不支持C++。 FedoraCore4附帶的Umbrello是基於KDE的,在保存和加載XMI文件時很慢。編譯1.5.1時居然提示我編譯器版本被它列入了黑名單以防止KDE崩潰,要求我更換其他版本編譯器。gcc (GCC) 4.0.0 20050519 (Red Hat 4.0.0-8)。我通過SVN下載了gcc,但擔心把系統搞壞了,不敢弄。
Win32平臺上的StarUML是一個開源的UML/MDA平臺,據說很不錯(我用了一下,確實不錯),下載地址:http://www.plasticsoftware.com/。
注意:各工具導出的XMI並不完全兼容,可能導致信息丟失甚至解析錯誤!


webmin是Unix平臺上的服務器管理工具,能管理HTTP,FTP,SAMBA等.有許多插件可用.我選擇了"Start at boot",端口號默認10000.但沒有識別我後來安裝的Apahce,不知道怎麼回事?

jEdit 是基於Java的文本編輯器(自然地在windows,Linux上都可用),支持多種語言的語法着色,就象Windows上的UEStudio和 EditPlus一樣可以作爲一個簡單的IDE.有許多插件可用.(FedoraCore4附帶JRE版本1.4.2,jEdit1.4.3pre3運行不起來:Out of memory...。從SUN下載JDK1.5或者JRE1.5安裝即可)

這兒是Linux內核2.6完整的UML文檔,但似乎不實用:http://www.softwarerevolution.com/jeneral/open-source-docs.html

永中Office2004與MS Office文檔格式兼容性很好。有Linux平臺的試用版免費下載。在FederaCore4上安裝失敗,提示找不到 "libgnomeui.so.32"。把FederaCore4光盤上的ORBit-0.5.17-15.i386.rpm和gnome-libs- 1.4.1.2.90-46.i.386.rpm安裝上去就OK了。永中Office要安裝自帶的JVM,不管PC上是否安裝過。 FC5上安裝永中20004Trial過程崩潰;安裝2007Beta版重是在停留在解壓縮階段,按照永中論壇的一個帖子搞定了。

除了 FC系統自帶的up2date以外,我們還有更爲強大的在線升級工具 yum 和 apt-get 可用。apt與yum相比,apt歷史更久,且不限於RPM格式的包,可用於多個Linux Release。yum 工具是Fedora 推薦使用的在線升級更新軟件包的工具,在安裝系統時,一般都是默認安裝。主要資源有 freshrpms.net和 rpm.livna.org。例如安裝anjuta: yum install anjuta。幫助:yum --help。

WireShark (原名Ethereal)是個功能強大的協議分析器。最重要的特性:(1)Capture Filter,(2)Display Filter,(3)Capturer停止條件(時間、包數、大小),Capture File存儲形式(多文件循環利用)(這個功能比Windows上的安捷倫Agilent還要強!我用了0.99.3及之前版本,此功能經常導致軟件崩潰)(4)允許指定接口抓包,常用的接口包括以太接口、Lookback接口、所有接口(5)支持tcpdump等許多其他協議分析器的記錄格式,(6) 支持多達759種協議,(7)捕獲報文能夠全部或部分存儲、導出、打印,(8)可運行於所有流行的OS上。Ethereal從版本0.99.1開始更名爲 WireShark。可以同時運行多個Wireshark在同一接口上抓包--這樣便於從多個角度觀察網絡流量,例如區分多個IPCam的流量以便於判斷哪個斷線了。鑑於WireShark的多文件循環存儲功能有BUG,可以用tcpdump或者命令行方式的Wireshark,直接把報文打印到 stdout,不需要考慮尺寸限制--缺點是瀏覽報文不如GUI方式直觀。
 Ethereal® is used by network professionals around the world for troubleshooting, analysis, software and protocol development, and education. It has all of the standard features  you would expect in a protocol analyzer, and several features not seen in any other product. Its open source license allows talented experts in the networking community to add enhancements. It runs on all popular computing platforms, including Unix, Linux, and Windows.


企鵝輸入法fcitx,比FedoraCore4自帶的智能拼音好用多了.

Linux 是很不錯的OS,但現實環境有許多平時工作要用的軟件都必須在Windows環境下運行,所以還是沒有辦法使用Linux。其實安裝了WINE即可使用exe檔,也可以使用ie、word、execl、powerpoint、photoshop、adobe acrobat......
IEs4Linux is the simpler way to have Microsoft Internet Explorer running on Linux. What is the target public?
    * WebDesigners that want to move to Linux but still need to test their sites on IE.
    * People who have to open IE-only sites
我爲了在WINE上安裝IE6,用winetools幾次都出錯。網上有人說用EasyWine也總是出錯。最後用IEs4Linux輕鬆搞定!
安裝BII的NetCam客戶端後提示缺少MSVCP60.dll,拷貝過來後運行又發生"run time error"。看來用wine運行任意一個Windows上的exe不是那麼容易!

偶然發現了一個內部網搜索引擎ht://Dig在http://www.htdig.org/。http://www.gnu.org/就是用它作爲站內搜索引擎。這個軟件在做web站點時可能有用。


凡是FedoraCore4光盤上有的,可以從FC4-i386-DVD.iso文件中提取(mount選項-t iso9660 -o loop),也可以從Redhat提供的鏡像站點下載rpm來安裝:http: //fedora.redhat.com/download/mirrors.html。通過RPM名字或者包含的某共享庫名字查找RPM在網站 rpmfind.net, rpm.pbone.net和www.rpmseek.com。

今天偶然發現有Fortran和Pascal 代碼到C代碼轉化工具f2c和p2c。記得以前聽說過Java代碼到C#代碼的轉化工具。“如果你有一些用 FORTRAN 或 Pascal 寫的代碼要用 C 重寫的話, f2c 和 p2c 對你非常有用. 這兩個程序產生的 C 代碼一般不用修改就直接能被 GCC 編譯.如果要轉換的 FORTRAN 或 Pascal 程序比較小的話可以直接使用 f2c 或 p2c 不用加任何選項. 如果要轉換的程序比較龐大, 包含很多文件的話你可能要用到一些命令行選項. ”

Zope,Z Object Publishing Environment,它即是http服務器,又是數據庫,又包含腳本編程語言。Zope是一種支持多種平臺開源的Web應用服務器軟件,它提供了完善的功能和強大的動力,適用於構建各種類型的Web應用,從小型網站到企業級分佈式網絡應用都有Zope的用武之地。Zope在許多方面都超過了ASP、 PHP、JSP等傳統方法,是一套優秀而完整的解決方案。本專題詳述Zope的應用開發,帶您領略Zope的強大功能。
Zope是一個應用服務器, 他是一個讓您的應用被英特網訪問(如用您的web瀏覽器)的平臺. 這樣Zope可在內部網或者英特網上提供內容.非常適合內容管理和羣件系統, Zope被認爲這個市場最有效的工具之一. "Zope在創建和管理動態基於web的商務應用(如內部網和門戶網)等方面,使團隊協作成爲可能." (Zope.org)

Virtual Network Computing (VNC) allows one to view and operate the console of another computer remotely accross the network. RealVNC(www.realvnc.com)和TightVNC(www.tightvnc.com)在Linux和Windows上都有 Client/Server合一的版本。我在Windows上安裝TightVNC作爲VNC Server,配置非常簡單:服務器配置只需要設置密碼即可。Linux上運行VNC客戶端在訪問時指定服務器IP並提供密碼即可。 Fedora Core 5集成了2個VNC客戶端:krdc和“終端服務客戶端”,都在Internet分類下面。
在windows中也由一套著名的網絡遙控軟件――Symantec公司推出的pcAnywhere。

備份是系統管理中最艱鉅、最容易被忽略的工作之一,同時也是最重要的工作之一。備份是防禦硬件故障、非法入侵和系統安全的最大威脅——終端用戶的最後一道防線。有許多備份系統價值數千美元,它們使用到處都是 Bug 的專有版權軟件將數據存入昂貴的磁帶機中,而實際上有更好的方法:Rsync 和廉價的磁盤陣列。

對於 VMWare、Virtual PC 這些虛擬機軟件,可能大家都比較熟悉。今天我要介紹的是另一個虛擬機軟件——VirtualBox。VirtualBox 是一款功能強大的 x86 虛擬機軟件,它不僅具有豐富的特色,而且性能也很優異。更可喜的是,VirtualBox 於數日前走向開源,成爲了一個發佈在 GPL 許可之下的自由軟件。大小隻有11M。我在FC6上運行虛擬機失敗:
Starting VirtualBox kernel module FATAL: Error inserting vboxdrv (/lib/modules/2.6.20-1.2944.fc6/misc/vboxdrv.ko): Invalid module format.

qRFCView is a viewer for IETF RFCs. Advantages are:
    * automatic table of content, with direct opening of section;
    * handling of RFC internal cross-references;
    * automatic downloading of a referenced RFC from the IETF web site on a simple click;
    * caching of RFC in a local directory;
    * tab-browsing of RFC;
    * searching.
It is available for Linux and Windows operating system (and potentially MacOS X).
我在Windows上用過幾個盜版的或免費的RFC瀏覽器,但它們功能都不如qRFCView強大。
[RFC資源]
詳細列表(約7M)    http://ietfreport.isoc.org/rfclist.html
簡明列表(約2M)    http://ietfreport.isoc.org/rfcindex.html
TXT格式        http://www.ietf.org/rfc/rfc###.txt
PDF格式        http://www.faqs.org/ftp/rfc/pdf/rfc###.txt.pdf
RPM打包        在http://rpmfind.net找到了rfc-2007.4.14-1.noarch.rpm


sipsak: SIP Swiss Army Knife, very useful test utility (Linux). SIPSAK是一個小的命令行工具,用於開發者和系統管理員測試SIP系統。可對SIP應用和設備進行簡單的測試。sipsak結合Python, Perl之類的腳本語言,可以快速構建一個簡單測試。http://sipsak.org/上的cdt.pl就是這方面的例子。這比起僅使用腳本語言,省去了認證、發送ACK、DNS解析等麻煩。

SIPp: a powerful SIP performance testing tool sponsered by HP. Its main features are basic SIPStone scenarios, TCP/UDP transport, customizable (xml based) scenarios, dynamic adjustement of call-rate and a comprehensive set of real-time statistics.

另外,在http://www.sipcenter.com/, http://www.sipforum.org/, http://www.cs.columbia.edu/sip/等網站收集SIP相關大量信息。http: //www.ee.oulu.fi/research/ouspg/protos/testing/c07/sip/按照GPL發佈了SIP報文 Torture(拷問,rfc4475)測試用例。

Bison的-g選項輸出語法的自動機的VCG定義。 Visualization of Compiler Graphs。以下兩個地方有相關工具信息:http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html, http://vcg.sourceforge.net/,directory.fsf.org/Xvcg.html。好像函數調用關係也可以用這個表達,見http://web.mit.edu/fortran/www/vcg.html。

BuildBot基於Python。 BuildBot是分佈式結構,master監控若干slaves(監視狀態,下發命令,蒐集結果),各個slave按照指示執行 update/compile/test並返回結果。Python和其他許多項目(Python的持續構建報告http: //www.python.org/dev/buildbot/;wireshark的構建報告http: //buildbot.wireshark.org/trunk/)利用它做持續構建。最簡單的調度器是Periodic,每隔N秒(無論庫有無變化)呼叫slave一次;其次是Scheduler,每次注意到庫變化都呼叫slave一次;最複雜是Nightly,注意到庫變化後在特定時間點呼叫slave一次。
我嘗試了一下BuildBot,做到了Periodic式持續構建,但沒有做到Scheduler式構建--庫變動後,WEB上一直看不到新Build動作,似乎SVNProller檢測不到庫的變化?
我們小組現在用的Autobuild機制修改爲基於BuildBot來實現,好處不大,因爲BuildBot更適合於那些需要在多個環境下編譯和測試的軟件項目。


dogtail (http://people.redhat.com/zcerza/dogtail/index.html) is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. dogtail scripts are written in Python and executed like any other Python program. Both dogtail and LDTP (Linux Desktop Testing Project) are test tools that use the same underlying technology (AT-SPI). Beyond that fact, there is no current relationship between dogtail and LDTP.(我最初是在http://directory.fsf.org/devel/prog/Python/這個工具發現這個工具的簡介。後來發現了marathon--一個基於Python和Java的測試Java Swing GUI的測試工具。其實以上這些GUI測試工具的測試步驟都是如下三步:Record[錄製腳本]->Refactor[調整]-> Replay[重放])

pywinauto(https://sourceforge.net/projects/pywinauto/) is Windows GUI automation with Python. No pre-recording or window capture needed before use - just code and run :-)

SIP (http://riverbankcomputing.co.uk/sip/index.php) is a tool for automatically generating Python bindings for C and C++ libraries. It was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library. 可yum安裝,名稱Python-SIP。
SIP is included with all of the major Linux distributions. However, it may be a version or two out of date.
PySWT (http://www.cs.nyu.edu/zilin/pyswt/pmwiki.php?n=PySWT.Introduction)是用SIP 擴展Python的一個好例子(它包裝了Eclipse採用的SWT庫,這只是作者做的原始版本而已)。這個頁面比較了SWIG和SIP兩種包裝方法,認爲SIP更易用。

PyChecker is a tool for finding bugs in python source code. It finds problems that are typically caught by a compiler for less dynamic languages, like C and C++. It is similar to lint. Because of the dynamic nature of python, some warnings may be incorrect; however, spurious warnings should be fairly infrequent.

Pylint is a python tool that checks if a module satisfies a coding standard. Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. But Pylint offers some more features, like checking line-code's length, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more (see the complete check list).

Pyreverse is a set of tools for reverse engineering Python code. So far, it features dependency analysis tools, unittest skeleton generation, quick UML like diagrams generation and XMI generation for importation in a UML modeling tool. A special module can be used to generate files readable by Argo UML.

Winpdb - An Advanced Python Debugger. Winpdb is an GPL Python debugger, with support for smart breakpoints, multiple threads, namespace modification, embedded debugging, password encrypted communication and speed of up to 20 times that of pdb. 它基於wxPython。我用了一下,感覺比Python自帶的IDLE的調試功能更強,更好用,速度也更快(IDLE裏面執行一行代碼慢得像蝸牛)。 Winpdb只有很少的在線文檔,啓動命令:"_winpdb.py -t"。調試器Launch一個Python腳本時使用的就是啓動調試器時的那個Python解釋器,似乎沒有辦法更換。

pydb is an expanded version of the Python debugger loosely based on the gdb comand set. It also has all of the features found in an earlier version of pydb.py that was distributed with the debugger GUI ddd. 早期的pydb是DDD的一個插件,而現在的版本基於gdb命令行,所以還可以集成到Emacs中。

免費的Python IDE很多,我選擇了SPE(http://pythonide.stani.be/)。它基於wxPython,集成了UML, 語法檢查工具PyChecker, 調試器Winpdb, GUI設計器wxGlade和XRC, 3D建模器和遊戲引擎Blender & more...我用了一下,它像Python自帶的IDLE那樣有命令行,但編輯代碼等功能好了十萬八千里,顯示漢字沒問題。

SER網站 Download頁還有幾個相關的不太成熟的小項目:(1)媒體服務器SEMS用作VoiceMail服務器、會議等應用(RFC 4458等有相關規範);(2)RTPProxy作爲會話雙方的RTP中轉站,用於使RTP穿透NAT。--一個替代品是http: //mediaproxy.ag-projects.com/的MediaProxy。

NullHttpd是一個微型的HTTP Server。如果需要在C代碼中嵌入HTTP Server時,可以考慮用上它--就像其主頁聲明的:這個server並不那麼可靠,不要在涉及穩定性或安全性的環境中用它。

wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more  using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native.


博客http://le4rnin9.cublog.cn上有作者對SIPp,OpenSER,Asterisk等的研究資料。
OpenDNS(http://www.opendns.com/)提供了兩個DNS Server 208.67.222.222和208.67.220.220,解析速度很快。

 

 原文地址 http://blog.chinaunix.net/u1/44777/showart_354462.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章