Handbook of Open Source Toolstxt,chm,pdf,epub,mobi下载 作者:Sandeep Koranne 出版社: Springer 出版年: 2010-10-28 页数: 484 定价: USD 159.00 装帧: Hardcover ISBN: 9781441977182 目录 · · · · · ·Part I Fundamentals1 GNU/Linux Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Basic GNU/Linux Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.1 System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1.2 GNU/Linux introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.1.3 GNU coreutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 · · · · · ·() Part I Fundamentals 1 GNU/Linux Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Basic GNU/Linux Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.1 System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1.2 GNU/Linux introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.1.3 GNU coreutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2 Bash shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.1 Bash shell scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 External commands and programs in GNU/Linux . . . . . . . . . . . . . . . . 12 1.3.1 GNU regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4 Next steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.5 OpenSSH: OpenBSD Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6 Programming Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.1 C and C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.2 GNU FORTRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.3 Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.4 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.5 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.6.6 Tcl/Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6.7 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6.8 Common Lisp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.6.9 Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.6.10 Erlang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.6.11 Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.6.12 Scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.6.13 Google’s GO Programming Language . . . . . . . . . . . . . . . . . . . 31 1.6.14 X10 Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.6.15 Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.7 Miscellaneous Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.7.1 VNC : Virtual Network Computing . . . . . . . . . . . . . . . . . . . . . 34 1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2 Text processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.1 OpenOffice.org Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2 TeX and LaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.2.1 Lout Typesetting System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.2.2 SGML Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.2.3 Texinfo : GNU Documentation System . . . . . . . . . . . . . . . . . . 39 2.2.4 LyX Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.5 Texmaker LaTeX Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.2.6 PostScript and PDF Support . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3 Scribus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3.1 Citation management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.4 Document classification software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.4.1 GNU locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.5 Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Part II Software Engineering and Libraries 3 Software Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.1 GCC : GNU Compiler Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.1.1 GCC Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.1.2 GCC Preprocessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.1.3 GCC Support of OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.1.4 GCC Advice Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.1.5 GCC Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.1.6 GCC : Inline Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.1.7 GCC Intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.1.8 Compiling Java using GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.1.9 Compiling Ada using GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.1.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.2 Source Code Configuration Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.2.1 Introduction to Version Control Systems . . . . . . . . . . . . . . . . . 59 3.2.2 CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.2.3 SVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.2.4 GIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.2.5 TkCVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.2.6 Tinderbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.3 GNU Build System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.3.1 Autoconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.3.2 Automake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.3.3 Libtool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.4 Automatic Build Dependency Management . . . . . . . . . . . . . . . . . . . . . 69 3.4.1 GNU make : automatic build dependency . . . . . . . . . . . . . . . . 69 3.4.2 SCONS : A software construction tool . . . . . . . . . . . . . . . . . . 71 3.4.3 CMAKE and QMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.5 Bugzilla : Defect Tracking System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.6 Editing Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.6.1 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.6.2 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.6.3 KDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.7 Static Checks on Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.7.1 ctags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.8 GNU gcov: Test Coverage Program . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.8.1 Compiling programs for gcov . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.8.2 Running gcov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.9 Debug Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.9.1 GDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.9.2 Insight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.10 Doxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.10.1 Using Doxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.11 Source Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 3.12 Profilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.12.1 GNU profiler : gprof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.12.2 Valgrind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.13 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4 Standard Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.1 GNU C Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.2 C++ Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5 Apache Portable Runtime (apr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 5.1 APR Memory Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.2 APR Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3 APR Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.4 APR Thread Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.5 File information, IO, and Memory mapped files . . . . . . . . . . . . . . . . . 119 5.6 Hash tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.7 Using Memcache with APR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.8 Shared memory with APR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6 Boost C++ Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.1 Boost smart pointer and memory pool . . . . . . . . . . . . . . . . . . . . . . . . . 128 6.2 Boost asio framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6.2.1 Boost IOStreams framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.3 Boost data structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.4 Boost Graph Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.5 Boost Spirit Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.6 Boost multi-threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.7 Boost Python integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.8 Boost Generic Image Processing Library (GIL) . . . . . . . . . . . . . . . . . 141 6.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 7 Performance Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 7.1 Google perftools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 7.1.1 perftools : tcmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 7.1.2 perftools : heap checker . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 7.1.3 perftools : heap profiler . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7.1.4 perftools : cpu profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.2 Boehm GC : garbage collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.3 Using Boehm GC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8 Compression Engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 8.1 ZLIB Compression Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 8.1.1 Compression ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 8.1.2 gzip file access functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 8.1.3 Integration of zlib and gzip in Python . . . . . . . . . . . . . . . . . . . 160 8.2 LIBBZ2 and BZIP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 8.2.1 Integration of bzip2 in Python . . . . . . . . . . . . . . . . . . . . . . . . . . 163 8.3 LZMA and XZ Utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 8.3.1 XZ Utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 8.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 9 Application Development Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.1 RPC (remote procedure call) library . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.1.1 XDR : External Data Representation Library . . . . . . . . . . . . . 169 9.2 Checksum computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 9.2.1 MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 9.2.2 SHA1 checksum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 9.3 OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 9.4 XML Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 9.4.1 Expat : XML processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 9.4.2 libXML : XML processing library . . . . . . . . . . . . . . . . . . . . . . 180 9.5 Berkeley DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.5.1 DB open function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.5.2 Other Berkeley DB functions . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.6 Memcached Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.7 SWIG interface generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 9.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10 Hierarchical Data Format 5 : HDF5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.1 HDF5 files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.1.1 HDF5 API Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . 193 10.2 Example of HDF5 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.2.1 Writing and Reading compound datatype in HDF5 . . . . . . . . 199 10.2.2 HDF5 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.2.3 References to objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 11 Graphics and Image Processing Libraries . . . . . . . . . . . . . . . . . . . . . . . . . 201 11.1 Cairo: A Vector Drawing Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 11.2 Graphics File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 11.2.1 libPNG: library for Portable Network Graphics . . . . . . . . . . . 205 11.2.2 Scalable Vector Graphics (SVG) . . . . . . . . . . . . . . . . . . . . . . . 208 11.2.3 GraphicsMagick and ImageMagick . . . . . . . . . . . . . . . . . . . . . 209 11.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Part III Parallel and System Programming 12 Parallel Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 12.1 POSIX Thread Library (pthreads) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 12.1.1 Understanding pthread programming model . . . . . . . . . . . . . . 214 12.1.2 Pthreads Keys: using thread specific data . . . . . . . . . . . . . . . . 216 12.1.3 Pthreads Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.2 OpenMP: Open specification for Multi-processing . . . . . . . . . . . . . . . 218 12.3 MPI: Message Passing Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 12.3.1 Using Boost.MPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 12.4 Other libraries and tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 12.4.1 Thread Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 12.4.2 CUDA : C Unified Device Architecture . . . . . . . . . . . . . . . . . . 232 12.4.3 SIMT in CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 12.4.4 Compute Kernels in CUDA. . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 12.4.5 Compiling CUDA code with NVCC . . . . . . . . . . . . . . . . . . . . 235 12.4.6 OpenCL (Open Compute Language) . . . . . . . . . . . . . . . . . . . . 239 12.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 13 Compiler Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.2 Anatomy of a Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 13.3 Lexical Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 13.3.1 GNU flex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 13.3.2 GNU m4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 13.3.3 GNU readline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 13.3.4 getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 13.4 YACC: Yet Another Compiler Compiler . . . . . . . . . . . . . . . . . . . . . . . 250 13.4.1 Boost SPIRIT Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 13.5 Code Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 13.5.1 GNU Binutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 13.5.2 GNU Binutils libelf and elfutils . . . . . . . . . . . . . . . . . . . . . . . . 264 13.5.3 GNU Binutils ld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 13.5.4 BFD: Binary File Descriptor Library . . . . . . . . . . . . . . . . . . . . 268 13.5.5 GNU lightning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 13.5.6 ANTLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 13.6 LLVM: Low Level Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 13.6.1 LLVM Core and LLVM IR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 13.6.2 LLVM dragonegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 13.6.3 LLVM System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 13.6.4 Using Clang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 13.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Part IV Engineering and Mathematical Software 14 Scientific Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 14.1 Computer Vision with OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 14.2 CImg: C Image Processing Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 14.3 Binary Decision Diagram (bdd): CUDD Library . . . . . . . . . . . . . . . . . 291 14.4 FWTools: Open Source GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 14.4.1 PROJ4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 14.4.2 GDAL : Geospatial Data Abstraction Library and OGR . . . . 297 14.5 GNU Image Manipulation Program 14.6 Computational Fluid Dynamics using OpenFOAM. . . . . . . . . . . . . . . 300 14.7 Molecular Dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 14.7.1 NAMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 14.7.2 14.7.3 Molecular Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 14.7.4 Foldng@Home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 14.8 Audacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.8.1 14.9 14.9.1 14.9.2 Quantum GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 15 15.1 Algorithmic Design and HDL Capture . . . . . . . . . . . . . . . . . . . . . . . . . 318 15.2 HDL Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 15.3 BLIF Format in a nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 15.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 GROMACS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Sound Exchange : sox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.10 QCAD : 2d CAD Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 VLSI CAD Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 14.11 BRL-CAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 GRASS GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.12 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Geographical Information Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Schematic capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 14.13 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 15.4.1 Xcircuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 15.4.2 GNU gschem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 15.5 Verilog Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 15.5.1 Icarus Verilog Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 15.5.2 Pragmatic GPL cver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 15.5.3 GTKWave: Waveform Viewer . . . . . . . . . . . . . . . . . . . . . . . . . 329 15.6 VHDL Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 15.7 Alliance CAD System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 15.7.1 Alliance CAD VHDL processing . . . . . . . . . . . . . . . . . . . . . . . 331 15.7.2 Alliance CAD tool asimut . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 15.7.3 VHDL Logic Synthesis using Alliance CAD tool Boom . . . . 332 15.7.4 Alliance CAD tool xsch schematic viewer . . . . . . . . . . . . . . 335 15.7.5 Gate level processing in Alliance CAD . . . . . . . . . . . . . . . . . . 335 15.7.6 Physical design with Alliance CAD . . . . . . . . . . . . . . . . . . . . . 339 15.7.7 Alliance CAD tool for standard-cell routing: nero . . . . . . . . 341 15.7.8 QUCS : Universal Circuit Simulator . . . . . . . . . . . . . . . . . . . . 343 15.8 Magic VLSI Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 15.9 NGSpice SPICE Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 15.9.1 15.9.2 Performing TRANSIENT analysis . . . . . . . . . . . . . . . . . . . . . . 347 15.9.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Elementary devices in SPICE . . . . . . . . . . . . . . . . . . . . . . . . . . 346 16 Math libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 16.1 BLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 16.2 ATLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 16.3 LAPACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 16.4 NTL 16.5 GSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 16.6 GMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 16.7 16.8 FFTW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 16.9 17 Mathematics Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 17.1 Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 17.2 GNU Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 17.3 R : Data analysis and Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 17.4 17.5 Pari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 17.6 Nauty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 17.7 Axiom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 17.8 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 GLPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 MPFR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 16.10 COIN-OR: Comp. Infrastructure for OR . . . . . . . . . . . . . . . . . . . . . . 355 PSPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 16.10.1 Open Solver Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 16.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 17.9 Singular Computer Algebra System . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 17.11 17.12 17.13 17.14 17.15 18 Artificial Intelligence and Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 18.1 18.2 18.3 ACL2: automatic theorem proving . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 18.4 . . . . . . . . . . . . . . . . . . . . 397 18.5 Representing floor-plans by k tuples . . . . . . . . . . . . . . . . . . . . . . . . . 398 18.6 18.7 18.8 LIBSVM : Support Vector Machines . . . . . . . . . . . . . . . . . . . . . . . . . . 405 18.8.1 18.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 polymake: software to analyze Polytopes . . . . . . . . . . . . . . . . . . . . . . . 379 Artificial Neural Networks : FANN. . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Other Math Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 SVM Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 17.10 GAUL : Genetic Algorithms Utility Library 17.11.1 Macaulay 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 17.11.2 CoCoA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 CGAL (Computer Geometry Algorithms and Library) . . . . . . . . . . . . 385 TeXMacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 18.5.1 Sequence-pair Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Introduction to AI Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 ASA : Adaptive Simulated Annealing Library . . . . . . . . . . . . . . . . . . . 400 Sage CLIPS: C Language Integrated Production System. . . . . . . . . . . . . . . 392 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Part V Scientific Visualization 19 Information Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 19.1 Graphical User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 19.1.1 X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 19.1.2 GIMP Toolkit: GTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 19.1.3 Qt: Application development framework . . . . . . . . . . . . . . . . . 414 19.1.4 Qt’s application programming API . . . . . . . . . . . . . . . . . . . . . . 418 19.1.5 Other GUI Toolkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 19.2 OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 19.2.1 GLUT : OpenGL Utility Toolkit . . . . . . . . . . . . . . . . . . . . . . . . 429 19.2.2 GLUI : GUI for OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 19.2.3 Using OpenGL from Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 19.3 OGRE : OO Graphics Rendering Engine . . . . . . . . . . . . . . . . . . . . . . . 434 19.4 Graphviz: dot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 19.4.1 DOT Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 19.5 gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 19.6 Grace/Xmgr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 19.7 Xfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 19.8 Inkscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 19.9 PovRay : Ray Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 19.10 gd (graphics drawing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 20 20.1 Web Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 20.1.1 20.1.2 YAWS: Yet Another Web Server . . . . . . . . . . . . . . . . . . . . . . . 456 20.1.3 LAMP Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 20.2 Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 20.3 Content Management with Joomla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 20.4 Virtualization and Cloud Computing. . . . . . . . . . . . . . . . . . . . . . . . . . . 458 20.4.1 Cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 20.4.2 Network and Cluster Monitoring . . . . . . . . . . . . . . . . . . . . . . . 460 20.4.3 Ganglia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 20.5 20.5.1 Creating database using PostgreSQL . . . . . . . . . . . . . . . . . . . . 461 20.6 MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 20.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 20.8 21 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 A Websites of Open-Source Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 19.11 asymptote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 20.4.4 19.12 FreeType : Font Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 HTTP Server : Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Web and Database Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 SQLite 19.14 Geomview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 19.15 HippoDraw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 20.9 19.16 GGobi : multi-dimensional visualization . . . . . . . . . . . . . . . . . . . . . . . 448 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 19.17 ParaView and VTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 19.13 Anti-grain geometry : AGG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.18 OpenDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 CouchDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 19.19 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 · · · · · · () |
文字表现力极强
很不错的书
一方面满足了自己的好奇心
相当发人深省