出版時間:2007-4 出版社:機械工業(yè) 作者:門多薩 頁數(shù):450 譯者:張昕
Tag標(biāo)簽:無
內(nèi)容概要
本書講述怎樣把UNIX環(huán)境下的應(yīng)用程序移植到Linux環(huán)境上運行,是一本綜合的開發(fā)和解決問題的參考手冊 。本書詳細(xì)描述了當(dāng)前IT行業(yè)中被廣泛應(yīng)用的各種UNIX操作系統(tǒng)間的區(qū)別,其內(nèi)容包括項目移植思考、調(diào)查、分析、移植Solaris應(yīng)用程序、移植AIX應(yīng)用程序、移植HP-UX應(yīng)用程序、測試和調(diào)試。它的讀者對象包括開發(fā)人員、應(yīng)用程序架構(gòu)師以及項目經(jīng)理。本書的內(nèi)容包括: 理解Linux環(huán)境: GNU二進制工具、Java環(huán)境、shell、打包工具等。 揭示并確定項目的未知因素、可變因素及其他風(fēng)險。 處理具體平臺的區(qū)別:標(biāo)準(zhǔn)、編譯器、鏈接器、版本化、系統(tǒng)/庫調(diào)用、線程等。 使用GNU調(diào)試器及Linux內(nèi)存泄露和性能跟蹤工具測試和調(diào)試移植后的應(yīng)用程序。 包含了UNIX和Linux上API、編譯器和鏈接器選項的快速索引,以及IBM POWER結(jié)構(gòu)特有的移植問題。
作者簡介
本書的三位作者是IBM最有經(jīng)驗的Linux移植專家,他們將帶領(lǐng)你走完整個項目移植過程:調(diào)查﹑分析﹑移植和測試。他們給出了一個從開始到完成的移植方法,對關(guān)鍵任務(wù)的切實討論,以及評估新項目時用到的問卷。按照本書的方法,你可以發(fā)現(xiàn)Linux在API、庫函數(shù)、版本化、系統(tǒng)特性和
書籍目錄
1 移植項目思考 191.1 軟件程序商業(yè)過程 191.2 移植過程 201.2.1 調(diào)查 201.2.2 分析 211.2.3 移植 211.2.4 測試 221.2.5 支持 221.3 定義項目范圍和目標(biāo) 221.4 估計 241.4.1 技能水平和移植經(jīng)驗 241.4.2 編譯器 251.4.3 第三方軟件和中間件的可用性 251.4.4 編譯環(huán)境和工具 251.4.5 平臺依賴的結(jié)構(gòu) 261.4.6 平臺/硬件依賴的代碼 261.4.7 搭建測試環(huán)境 261.4.8 用戶接口需求 271.5 創(chuàng)建項目移植進度表 281.6 從商業(yè)角度看移植過程 281.7 帶注解的技術(shù)調(diào)查問卷樣例 291.7.1 平臺相關(guān)的內(nèi)容 291.7.2 應(yīng)用程序相關(guān)的內(nèi)容 291.7.3 數(shù)據(jù)庫內(nèi)容 311.7.4 項目移植時間進度內(nèi)容 321.7.5 測試相關(guān)的內(nèi)容 321.7.6 項目移植的執(zhí)行內(nèi)容 331.8 小結(jié) 332 調(diào)查 342.1 編譯器 342.1.1 GNU gcc C編譯器 342.1.2 GNU g++ (C++)編譯器 352.1.3 GNU g77 FORTRAN編譯器 362.1.4 GNU Java編譯器(注釋8) 372.1.5 GNU COBOL 372.1.6 其他編譯器 372.2 Java環(huán)境 382.3 編譯環(huán)境 382.3.1 gmake 382.3.2 GNU二進制工具(binutils) 392.3.2.1 GNU ld 392.3.3 GNU as 392.3.4 集成開發(fā)環(huán)境 412.4 Linux Shell 412.5 打包 422.5.1 用RPM打包應(yīng)用程序 422.5.2 RPM的基本用法 432.5.2.1 rpm -i 432.5.2.2 rpm -e 432.5.2.3 rpm -U 442.5.2.4 rpm -q 442.5.2.5 rpm -V 442.5.3 LSB(Linux Standard Base)推薦的基準(zhǔn)打包格式 442.6 項目管理任務(wù) 442.7 小結(jié) 463 分析 473.1 Linux標(biāo)準(zhǔn) 473.2 GNU libc庫 483.2.1 glibc遵循的標(biāo)準(zhǔn) 493.3 GNU科學(xué)庫 503.4 共享庫 513.5 庫版本化(注釋8,9) 513.5.1 外部庫版本化 513.5.2 符號版本化 533.6 動態(tài)鏈接器(運行時鏈接器) 563.6.1 編程接口 573.6.2 延遲重定位(Lazy Relocation) 573.6.3 初始化(initializing)和終止化(finalizing)函數(shù) 583.7 系統(tǒng)調(diào)用 583.8 大頁面支持 593.9 Native POSIX線程庫(Native POSIX Threads Library,簡寫作NPTL) 603.9.1 最大線程數(shù) 613.10 國際化(I18N)(注釋18)和本地化 613.10.1 iconv支持 633.10.2 如何創(chuàng)建消息目錄(message catalog)(注釋19) 633.11 大小端(Big/Little-Endian,也叫字節(jié)序)環(huán)境 643.12 從32位移植到64位 653.12.1 常見的移植錯誤 663.12.2 最優(yōu)方法 673.13 小結(jié) 674 移植Solaris應(yīng)用程序 684.1 準(zhǔn)備工作 684.1.1 搭建移植系統(tǒng) 684.1.2 搭建代碼修改管理系統(tǒng) 694.1.3 搭建編譯系統(tǒng) 694.2 常見的區(qū)別 694.2.1 C語言 704.2.2 C++語言 704.2.3 GNU C/C++語言 704.2.4 Java語言 714.2.5 線程 714.2.6 所支持的標(biāo)準(zhǔn)之間的比較 714.3 編譯器 724.3.1 C編譯器 724.3.2 C編譯器選項 724.3.3 C++編譯器選項 824.3.4 GNU g++的模板實例化 924.3.5 編譯32位或64位目標(biāo)文件 924.3.6 編譯器的優(yōu)化和性能選項 924.3.7 Linux平臺上的命名空間選擇 934.4 鏈接器 944.4.1 輸出映射 994.4.2 鏈接器工具 994.4.3 共享庫 1004.4.4 庫版本化 1004.4.5 動態(tài)鏈接器(運行時鏈接器) 1014.5 移植shell腳本到Linux 1014.6 國際化和本地化 1024.7 Make 1024.7.1 為C++語言內(nèi)建的Makefile變量 1044.7.2 庫依賴 1044.7.3 空規(guī)則 1044.7.4 當(dāng)前目標(biāo) 1044.7.5 SCCS和RCS文件 1054.7.6 有條件地給宏賦值 1054.7.7 模式替換宏的引用 1054.7.8 VPATH 1054.7.9 命令執(zhí)行 1064.7.10 特殊目標(biāo) 1064.7.11 環(huán)境變量 1074.7.12 退出狀態(tài) 1074.8 調(diào)試器 1084.9 線程 1084.9.1 Solaris libthread與Linux libpthread 1084.9.2 Solaris libpthread與Linux libpthread 1104.9.3 取消點(Cancellation Points) 1134.9.4 C++異常和Linux線程 1144.10 信號 1154.10.1 信號動作(Actions) 1164.10.2 簡單信號 1164.10.3 Linux的信號支持 1174.10.4 POSIX信號捕獲函數(shù) 1194.10.5 信號集 1204.10.6 信號信息 1204.10.7 kill() 1224.11 系統(tǒng)調(diào)用 1224.11.1 open() 1224.11.2 fcntl() 1244.11.3 dirent 1264.11.4 CPU親和性(Affinity) 1274.11.5 fork() 1274.12 系統(tǒng)庫 1274.13 Solaris和Linux API 1284.13.1 內(nèi)存管理 1284.13.2 進程間通信(Interprocess Communication, IPC) 1294.13.3 內(nèi)存布置優(yōu)化(Memory Placement Optimization, 簡寫作MPO) 1344.13.4 vfstab 1344.13.5 posix_spawn()和posix_spwawnp() 1344.13.6 plock() 1354.13.7 waitpid() 1354.14 科學(xué)庫 1364.15 大頁面支持 1364.16 Solaris上的一些不可移植的編程用法 1374.17 小結(jié) 1375 移植AIX應(yīng)用程序 1395.1 準(zhǔn)本工作 1395.1.1 搭建移植系統(tǒng) 1395.1.2 搭建代碼修改管理系統(tǒng) 1405.1.3 搭建編譯系統(tǒng) 1405.2 常見的區(qū)別 1405.2.1 C語言 1415.2.2 C++語言 1415.2.3 GNU C/C++語言 1415.2.4 Java語言 1415.2.5 線程 1415.2.6 所支持的標(biāo)準(zhǔn)之間的比較 1425.3 編譯器 1435.3.1 調(diào)用編譯器 1445.4 Make 1535.4.1 gmake條件分支語句 1545.5 鏈接器 1545.5.1 鏈接器的不兼容性 1545.5.2 鏈接器:從AIX移植到Linux參考手冊 1565.6 AIX和Linux創(chuàng)建共享庫的比較 1575.7 動態(tài)裝載 1575.8 AIX和Linux上模板實例化的區(qū)別 1585.8.1 使用#pragma或#include 1595.8.2 GNU中其他可用的模板選項 1605.9 C++filt工具 1605.10 系統(tǒng)API:AIX/Linux 1615.10.1 AIX/Linux I/O系統(tǒng)API 1615.11 部分AIX/Linux系統(tǒng)API之間的比較 1675.11.1 getfsent(), getfsfile(), getfstype(), getfsspec() 1675.11.2 ioctl() 1685.11.3 read(),write() 1695.11.4 confstr() 1715.11.5 opendir() 1715.11.6 readdir() 1725.11.7 fcntl() 1725.11.8 llseek(), lseek(), lseek64() 1775.11.9 uname() 1785.11.10 syslog(), closelog(), openlog() 1795.11.11 swapoff(), swapon() 1795.11.12 acct() 1805.11.13 mmap(), mmap64()(注釋17), munmap() 1815.11.14 pread(),pwrite() 1845.11.15 stat(), lstat(), fstat() 1855.11.16 ptrace() 1855.11.17 setgid(), setregid() 1875.11.18 sync() 1885.11.19 wait3(), wait4() 1895.11.20 getcwd() 1905.11.21 mount(), umount, vmount() 1915.11.22 readv(), writev() 1945.11.23 select() 1955.11.24 reboot() 1965.11.25 chroot() 1985.11.26 fstatfs(),statfs() 1995.11.27 poll() 2005.11.28 quotactl() 2015.12 AIX上的一些非標(biāo)準(zhǔn)的編程用法 2045.13 信號 2055.13.1 信號動作 2055.13.2 簡單信號 2055.14 網(wǎng)絡(luò)編程 2105.15 進程間通信(Interprocess Communication,簡寫作IPC) 2115.15.1 信號量 2115.15.2 系統(tǒng)V信號量集 2135.15.3 消息隊列(mqueue.h) 2135.15.4 共享內(nèi)存 2155.16 POSIX線程 2175.16.1 Linux和AIX的線程模型比較 2175.16.2 內(nèi)核空間線程 2175.16.3 用戶空間線程 2185.16.4 AIX和Linux POSIX線程交叉對比 2185.17 大頁面支持 2215.18 通用API 2215.19 小結(jié) 2226 移植HP-UX應(yīng)用程序 2246.1 準(zhǔn)備工作 2246.1.1 搭建移植系統(tǒng) 2246.1.2 搭建代碼修改管理系統(tǒng) 2256.1.3 搭建編譯環(huán)境 2256.2 常見的區(qū)別 2256.2.1 C語言 2266.2.2 C++語言 2266.2.3 GNU C/C++語言 2266.2.4 Java語言 2266.2.5 線程 2266.2.6 所支持標(biāo)準(zhǔn)之間的比較 2276.3 編譯器 2286.3.1 C編譯器選項 2296.3.2 C++編譯器選項 2326.3.3 GNU g++的模板實例化 2356.3.4 編譯32/64位二進制程序 2366.3.5 編譯器優(yōu)化和性能選項 2366.3.6 使用GNU進行移植和編譯 2386.3.7 Linux平臺上的命名空間選擇 2386.4 鏈接器(注釋21) 2396.4.1 輸出映射(export map) 2406.4.2 鏈接器工具 2406.5 庫版本化 2416.5.1 HP-UX上的庫版本化 2416.5.2 Linux上的庫版本化(注釋24) 2426.6 動態(tài)鏈接和共享庫 2426.6.1 GNU libtool 2446.7 移植shell腳本到Linux 2446.8 國際化(I18N)(注釋26) 2456.8.1 iconv支持和消息目錄(message catalog) 2476.9 軟件開發(fā)工具 2476.9.1 Makefile語法 2486.9.2 調(diào)試器 2506.10 線程 2506.10.1 HP-UX和Linux上的線程支持 2516.10.2 HP-UX DCE和POSIX線程的區(qū)別 2546.10.3 調(diào)試Linux線程 2566.10.4 C++異常和Linux線程 2586.10.5 鏈接線程安全的庫 2606.11 信號 2606.11.1 信號動作(Acitions) 2606.11.2 簡單信號 2616.11.3 信號發(fā)送 2626.11.4 Linux的信號支持 2626.11.5 POSIX信號捕獲函數(shù) 2636.11.6 信號信息 2636.11.7 信號缺省動作 2656.12 HP-UX上的系統(tǒng)調(diào)用和Linux上的對應(yīng)調(diào)用 2676.12.1 檢查POSIX API支持 2676.12.2 檢查Linux內(nèi)核版本 2716.13 系統(tǒng)庫 2726.14 GNU科學(xué)庫 2736.15 HP-UX和Linux API 2746.15.1 glibc版本 2746.15.2 glibc遵循的標(biāo)準(zhǔn) 2746.15.3 HP-UX上的一些不可移植的編程用法 2756.16 進程間通信 2756.16.1 管道 2756.16.2 FIFO 2766.16.3 POSIX消息隊列 2766.16.4 POSIX信號量 2776.16.5 POSIX共享內(nèi)存 2786.16.6 系統(tǒng)V共享內(nèi)存 2786.16.7 系統(tǒng)V消息 2796.16.8 系統(tǒng)V信號量 2796.17 小結(jié) 2807 測試和調(diào)試 2817.1 使用GNU調(diào)試器 2827.1.1 編譯可以使用GDB的程序 2827.1.2 調(diào)用GDB 2827.1.3 GDB基本命令 2837.1.4 調(diào)試多進程 2837.1.5 調(diào)試多線程應(yīng)用程序 2847.1.6 停止多線程程序 2857.1.7 GDB初始化文件 2867.1.8 GDB和信號 2867.1.9 GDB的圖形化前端(front end) 2887.2 strace和ltrace 2887.3 cscope工具 2887.3.1 Vim和cscope 2897.4 glibc調(diào)試支持 2907.5 內(nèi)存調(diào)試工具 2917.5.1 Electric Fence 2917.5.2 GNU/Linux mtrace, mcheck, MALLOC_CHECK 2927.5.3 Mpatrol 2927.5.4 dmalloc 2927.5.5 valgrind 2937.5.6 Rational Purefy 2937.5.7 Insure++ 2947.6 靜態(tài)程序檢查器 2947.6.1 Splint 2947.6.2 CodeSonar 2947.7 線程跟蹤工具 2957.8 性能監(jiān)測工具 2957.8.1 內(nèi)部視角 2957.8.2 外部視角 2997.8.3 其他工具 3027.9 小結(jié) 303F.3 編譯和鏈接 414《表F-3》670 控制和優(yōu)化棧增長的編譯器選項 415F.3.2 匯編代碼 415F.3.3 ??蚣芙Y(jié)構(gòu)和鏈接 415F.3.4 預(yù)先定義的符號 416F.3.5 調(diào)試 416F.4 字節(jié)序 416F.5 其他區(qū)別 416F.5.1 ASCII和EBCDIC問題 416F.5.2 cpuinfo的格式 417F.6 變參列表 417F.7 從哪兒可以獲取更多信息 417F.8 致謝 417G.1 打包任務(wù) 418G.2 安裝和升級任務(wù) 418G.3 用戶管理任務(wù) 420G.4 網(wǎng)絡(luò)管理和配置 420G.5 NFS管理和配置 421G.6 管理系統(tǒng)資源 422G.7 磁盤和文件系統(tǒng)管理 422G.8 交換分區(qū)管理 423G.9 邏輯卷管理 423G.10 常用的解決錯誤的方法 425G.11 網(wǎng)絡(luò)問題解決方法 427G.12 配置文件及其他文件 427G.13 可比較的命令 428
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載