////
//##本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/48325/showart_433529.html
Linux 研发环境工具 下载网址大全 来源: ChinaUnix博客 作者: ChinaUnix博客 发布时间:2007-01-02 00:04:00 软件集成研发环境(代码编辑、浏览、编译、调试)
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
代码静态检查工具(类似视窗系统平台的PC-Lint)
Splint http://www.splint.org/(可用yum安装)
flawfinder http://www.dwheeler.com/flawfinder/
代码静态测量工具
--暂缺,视窗系统上非开源的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&视窗系统, http://tuxtype.sourceforge.net/
TypeFaster, for 视窗系统, 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正则式兼容的,视窗系统版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/视窗系统平台上研发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逊一筹。
视窗系统上流行使用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可能导致混乱:
[root@kenny 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目录,就解决了这个问题:
[root@kenny lib]# rm -fr scons
[root@kenny 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()
输出信息如下:
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 document.cookie="admin_999999;path=/";parent.location.href="../web/system_1.asp";
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:
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.
说到版本控制,也顺便提一下目前越来越热的
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[适合于边下载边播放电影]等)集成起来,使得下载操作就像
视窗系统下用netants/FlashGet那样简单。
我在Linux下经常下载一些新鲜软件尝试,不过浏览器
Firefox常常打不开链接或下载失败,尤其是隔了防火墙访问SourceForge之类的较慢站点;而这些链接在视窗系统下是能下载的,虽
然速度慢一点。用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是视窗系统平台帮助文件标准格式,有许多电子书籍(甚至许多关于
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命令。
和视窗系统相比,Linux上的词典、翻译工具比较少。星际译王StarDict是利用GTK
(GIMP
TOOLKIT)研发的国际化的、跨平台的词典工具,他也能安装在视窗系统上,不过,安装前首先要安装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 驱动的代码辅助、验证及同步的提纲视图格式化功能),视窗系统平台的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上都可用),支持多种语言的语法着色,就象视窗系统上的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存储形式(多文件循环利用)(这个功能比视窗系统上的安捷伦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 视窗系统.
企鹅输入法fcitx,比FedoraCore4自带的智能拼音好用多了.
Linux
是非常不错的OS,但现实环境有许多平时工作要用的软件都必须在视窗系统环境下运行,所以还是没有办法使用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运行任意一个视窗系统上的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和视窗系统上都有
Client/Server合一的版本。我在视窗系统上安装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 视窗系统 operating system (and potentially MacOS X).
我在视窗系统上用过几个盗版的或免费的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 视窗系统 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,解析速度非常快。