注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡操作系統LinuxUNIX到Linux的移植

UNIX到Linux的移植

UNIX到Linux的移植

定 價:¥49.00

作 者: Alfedo Mendoza,ARTIS WALKER
出版社: 機械工業(yè)出版社
叢編項:
標 簽: Linux

ISBN: 9787111209119 出版時間: 2007-03-01 包裝: 膠版紙
開本: 787*1092 1/16 頁數: 450 字數:  

內容簡介

  本書講述怎樣把UNIX環(huán)境下的應用程序移植到Linux環(huán)境上運行,是一本綜合的開發(fā)和解決問題的參考手冊 。本書詳細描述了當前IT行業(yè)中被廣泛應用的各種UNIX操作系統間的區(qū)別,其內容包括項目移植思考、調查、分析、移植Solaris應用程序、移植AIX應用程序、移植HP-UX應用程序、測試和調試。.它的讀者對象包括開發(fā)人員、應用程序架構師以及項目經理。越來越多的開發(fā)人員、架構師和項目經理均面臨著把UNIX上的C、C++和Java應用程序移植到Linux上的挑戰(zhàn)。本書可以完整地指導你從當今最常用的UNIX平臺(Solaris、HP-UX,和AIX)上把程序移植到Linux上。本書的三位作者是IBM最有經驗的Linux移植專家,他們將帶領你走完整個項目移植過程:調查﹑分析﹑移植和測試。他們給出了一個從開始到完成的移植方法,對關鍵任務的切實討論,以及評估新項目時用到的問卷。按照本書的方法,你可以發(fā)現Linux在API、庫函數、版本化、系統特性和工具等方面所提供的功能以及對你的項目的影響。另外,作者還詳細講述了每個獨立的UNIX平臺上特有的問題和最實用的解決方法。..本書的內容包括:*理解Linux環(huán)境: GNU二進制工具、Java環(huán)境、shell、打包工具等。*揭示并確定項目的未知因素、可變因素及其他風險。*處理具體平臺的區(qū)別:標準、編譯器、鏈接器、版本化、系統/庫調用、線程等。*使用GNU調試器及Linux內存泄露和性能跟蹤工具測試和調試移植后的應用程序。*包含了UNIX和Linux上API、編譯器和鏈接器選項的快速索引,以及IBM POWER結構特有的移植問題。...

作者簡介

  Alfredo(Freddie)Mendoza是IBM“SystemandTechnology”部門“BusinessStrategyandEnablement”組的IT專家.他在應用程序結構和管理方面有19年的工作經驗.他現在正與一些獨立軟件提供商一起把他們的應用程序移植到IBM交叉平臺操作系統上.在此之前,Mendoza先生在IBMGlobalServices的AIX內核開發(fā)部門工作,是多個軟件開發(fā)部門的技術顧問.Mendoza先生撰寫了以及與人合寫一些關于線程管理和軟件算法的專利發(fā)明出版物.他是IntroductiontoUtilityComputing的作者,以及發(fā)表在IBMSystemsJournalUtilityComputing刊上的“DesignofanEnablementProcessforOn-DemandApplications”的合作者.ChakaratSkawratananond博士是IBM“BusinessStrategyandEnablement”部門的技術顧問.他在一些軟件廠商移植應用程序到基于IBMPOWER處理器的AIX或Linux上時提供一些支持.他有10年的UNIX軟件開發(fā)經驗,并且發(fā)表了一些關于Linux軟件移植和性能調優(yōu)的文章.他擁有位于奧斯丁的得克薩斯大學的電子和計算機工程博士學位.ArtisWalker是IBM“BusinessStrategyandEnablement”部門的一個技術顧問.他在把軟件廠商的應用程序移植到基于IBMPOWER的pSeries服務器(運行AIX或Linux)上時提供一些幫助.他在MicrosoftWindows和UNIX平臺(包括AIX和SunSolaris)上有超過15年的經驗.他具有非常豐富的軟件開發(fā)經驗,例如IBMDB2UniversalDatabase(DB2UDB),ORACLE,ODBC,JDBC,C,C,和Java等.他在AIX和DB2的移植和性能調優(yōu)方面發(fā)表了許多指南和文章.另外,他還是“IBMEmbracesOpenSource”系列文章的發(fā)起者和主要作者,這些文章重點講述了一些開源的解決方案,以及在基于IBMPOWER的AIX和Linux上的可操作性和設置方法.他擁有位于得克薩斯州圣安東尼奧的圣瑪莉大學的學士學位.譯者介紹張昕,2001年畢業(yè)于清華大學計算機系.由于一直比較喜歡自由開放的開發(fā)環(huán)境,從一開始就迷戀上了Linux.從最初漫天搜索Linux文檔開始,至今不覺已6年有余.雖然閱讀過不少Linux書籍文檔,做過一些Linux應用程序和內核模塊開發(fā)工作,但仍不敢說“掌握”了Linux,但對應用程序的編譯.鏈接和運行,以及Linux內核的內存管理.中斷處理和進程調度等,還是稍有一點兒心得.現供職于摩托羅拉公司,從事GSM通信平臺的移植(PowerPC架構的vxWorks及Linux版本).關于本書及Linux方面的知識,歡迎本書讀者及廣大Linux愛好者通過譯者的技術交流網站http

圖書目錄

目錄:
譯者序
序言
致謝
關于作者
第1章 項目移植思考        1
1.1 軟件程序商業(yè)過程        1
1.2 移植過程        2
1.2.1 調查        2
1.2.2 分析        3
1.2.3 移植        3
1.2.4 測試        4
1.2.5 支持        4
1.3 定義項目范圍和目標        4
1.4 估計        5
1.4.1 技能水平和移植經驗        6
1.4.2 編譯器        6
1.4.3 第三方軟件和中間件的可用性        6
1.4.4 編譯環(huán)境和工具        7
1.4.5 平臺依賴的結構        7
1.4.6 平臺/硬件依賴的代碼        7
1.4.7 搭建測試環(huán)境        8
1.4.8 用戶接口需求        8
1.5 創(chuàng)建項目移植進度表        9
1.6 從商業(yè)角度看移植過程        10
1.7 帶注解的技術調查問卷樣例        10
1.7.1 平臺相關的內容        10
1.7.2 應用程序相關的內容        11
1.7.3 數據庫內容        13
1.7.4 項目移植時間進度內容        14
1.7.5 測試相關的內容        14
1.7.6 項目移植的執(zhí)行內容        15
1.8 小結        15
第2章 調查        16
2.1 編譯器        16
2.1.1 GNU gcc C編譯器        16
2.1.2 GNU g++ (C++)編譯器        17
2.1.3 GNU g77 FORTRAN編譯器        18
2.1.4 GNU Java編譯器        19
2.1.5 GNU COBOL        19
2.1.6 其他編譯器        19
2.2 Java環(huán)境        19
2.3 編譯環(huán)境        20
2.3.1 gmake        20
2.3.2 GNU二進制工具        20
2.3.3 GNU as        21
2.3.4 集成開發(fā)環(huán)境        23
2.4 Linux Shell        23
2.5 打包         23
2.5.1 用RPM打包應用程序        24
2.5.2 RPM的基本用法        24
2.5.3 LSB推薦的基準打包格式        25
2.6 項目管理任務        25
2.7 小結        26
第3章 分析        28
3.1 Linux標準        28
3.2 GNU libc庫        29
3.3 GNU科學庫        30
3.4 共享庫         31
3.5 庫版本化        32
3.5.1 外部庫版本化        32
3.5.2 符號版本化        34
3.6 動態(tài)鏈接器(運行時鏈接器)        39
3.6.1 編程接口        40
3.6.2 延遲重定位        42
3.6.3 初始化和終止化函數        43
3.7 系統調用        43
3.8 大頁面支持        43
3.9 Native POSIX線程庫(NPTL)        48
3.10 國際化(I18N)和本地化        49
3.10.1 iconv支持        50
3.10.2 如何創(chuàng)建消息目錄        53
3.11 大小端環(huán)境        54
3.12 從32位移植到64位        55
3.12.1 常見的移植錯誤        56
3.12.2 最優(yōu)方法        57
3.13 小結        57
第4章 移植Solaris應用程序        59
4.1 準備工作        59
4.1.1 搭建移植系統        59
4.1.2 搭建代碼修改管理系統        59
4.1.3 搭建編譯系統        60
4.2 常見的區(qū)別        60
4.2.1 C語言        61
4.2.2 C++語言        61
4.2.3 GNU C/C++語言        61
4.2.4 Java語言        61
4.2.5 線程        61
4.2.6 所支持的標準之間的比較        61
4.3 編譯器        62
4.3.1 C編譯器        63
4.3.2 C編譯器選項        63
4.3.3 C++編譯器選項        69
4.3.4 GNU g++的模板實例化        76
4.3.5 編譯32位或64位目標文件        77
4.3.6 編譯器的優(yōu)化和性能選項        78
4.3.7 Linux平臺上的命名空間選擇        78
4.4 鏈接器        79
4.4.1 輸出映射        82
4.4.2 鏈接器工具        82
4.4.3 共享庫        82
4.4.4 庫版本化        83
4.4.5 動態(tài)鏈接器        83
4.5 移植shell腳本到Linux        83
4.6 國際化和本地化         84
4.7 Make        85
4.7.1 為C++語言內建的Makefile變量        86
4.7.2 庫依賴        86
4.7.3 空規(guī)則        86
4.7.4 當前目標        86
4.7.5 SCCS和RCS文件        87
4.7.6 有條件地給宏賦值        87
4.7.7 模式替換宏的引用        87
4.7.8 VPATH        87
4.7.9 命令執(zhí)行        88
4.7.10 特殊目標        88
4.7.11 環(huán)境變量        88
4.7.12 退出狀態(tài)        89
4.8 調試器        89
4.9 線程        89
4.9.1 Solaris libthread與Linux libpthread        89
4.9.2 Solaris libpthread與Linux libpthread        91
4.9.3 取消點        94
4.9.4 C++異常和Linux線程        95
4.10 信號        98
4.10.1 信號動作        98
4.10.2 簡單信號        99
4.10.3 Linux的信號支持        100
4.10.4 POSIX信號捕獲函數        102
4.10.5 信號集        102
4.10.6 信號信息        103
4.10.7 kill()        104
4.11 系統調用        104
4.11.1 open()        104
4.11.2 fcntl()        105
4.11.3 dirent        107
4.11.4 CPU親和性(Affinity)        108
4.11.5 fork()        108
4.12 系統庫        108
4.13 Solaris和Linux API        108
4.13.1 內存管理        109
4.13.2 進程間通信(IPC)        109
4.13.3 內存布置優(yōu)化(MPO)        114
4.13.4 vfstab        115
4.13.5 posix_spawn()和posix_
spwawnp()        115
4.13.6 plock()        115
4.13.7 waitpid()        115
4.14 科學庫        116
4.15 大頁面支持        117
4.16 Solaris上一些不可移植的編程用法        117
4.17 小結        117
第5章 移植AIX應用程序        119
5.1 準備工作        119
5.1.1 搭建移植系統        119
5.1.2 搭建代碼修改管理系統        119
5.1.3 搭建編譯系統        120
5.2 常見的區(qū)別        120
5.2.1 C語言        120
5.2.2 C++語言        121
5.2.3 GNU C/C++語言        121
5.2.4 Java語言        121
5.2.5 線程        121
5.2.6 所支持的標準之間的比較        121
5.3 編譯器        122
5.4 Make        130
5.5 鏈接器        131
5.5.1 鏈接器的不兼容性        131
5.5.2 鏈接器:從AIX移植到Linux
參考手冊         133
5.6 AIX和Linux創(chuàng)建共享庫的比較        133
5.7 動態(tài)裝載        134
5.8 AIX和Linux上模板實例化的區(qū)別        135
5.8.1 使用#pragma或#include        135
5.8.2 GNU中其他可用的模板選項        138
5.9 C++filt工具        138
5.10 系統API:AIX/Linux        139
5.11 部分AIX/Linux系統API之間的比較        143
5.11.1 getfsent()、 getfsfile()、getfstype()、getfsspec()        144
5.11.2 ioctl()        145
5.11.3 read()、write()        146
5.11.4 confstr()        148
5.11.5 opendir()        148
5.11.6 readdir()        149
5.11.7 fcntl()        149
5.11.8 llseek()、lseek()、lseek64()        153
5.11.9 uname()        154
5.11.10 syslog()、closelog()、openlog()        154
5.11.11 swapoff()、swapon()        155
5.11.12 acct()        156
5.11.13 mmap()、mmap64()、
munmap()        157
5.11.14 pread()、pwrite()        159
5.11.15 stat()、 lstat()、fstat()        160
5.11.16 ptrace()        161
5.11.17 setgid()、setregid()        163
5.11.18 sync()        163
5.11.19 wait3()、wait4()        164
5.11.20 getcwd()        165
5.11.21 mount()、umount()、vmount()        166
5.11.22 readv()、writev()        169
5.11.23 select()        170
5.11.24 reboot()        172
5.11.25 chroot()        173
5.11.26 fstatfs()、statfs()        174
5.11.27 poll()        176
5.11.28 quotactl()        177
5.12 AIX上的一些非標準的編程用法        179
5.13 信號        180
5.13.1 信號動作        180
5.13.2 簡單信號        180
5.14 網絡編程        185
5.15 進程間通信(IPC)        186
5.15.1 信號量        186
5.15.2 系統V信號量集        187
5.15.3 消息隊列        188
5.15.4 共享內存        190
5.16 POSIX線程        191
5.16.1 Linux和AIX的線程模型比較        191
5.16.2 內核空間線程        192
5.16.3 用戶空間線程        192
5.16.4 AIX和Linux POSIX線程
交叉對比        192
5.17 大頁面支持        195
5.18 通用API        195
5.19 小結        195
第6章 移植HP-UX應用程序        198
6.1 準備工作        198
6.1.1 搭建移植系統        198
6.1.2 搭建代碼修改管理系統        198
6.1.3 搭建編譯環(huán)境        199
6.2 常見的區(qū)別        199
6.2.1 C語言        199
6.2.2 C++語言        200
6.2.3 GNU C/C++語言        200
6.2.4 Java語言        200
6.2.5 線程        200
6.2.6 所支持標準之間的比較        200
6.3 編譯器        201
6.3.1 C編譯器選項        202
6.3.2 C++編譯器選項        205
6.3.3 GNU g++的模板實例化        208
6.3.4 編譯32/64位二進制程序         210
6.3.5 編譯器優(yōu)化和性能選項        210
6.3.6 使用GNU進行移植和編譯        211
6.3.7 Linux平臺上的命名空間選擇        212
6.4 鏈接器        213
6.4.1 輸出映射        214
6.4.2 鏈接器工具        214
6.5 庫版本化        214
6.5.1 HP-UX上的庫版本化        214
6.5.2 Linux上的庫版本化        215
6.6 動態(tài)鏈接和共享庫        215
6.7 移植shell腳本到Linux         216
6.8 國際化(I18N)         217
6.9 軟件開發(fā)工具        220
6.9.1 Makefile語法        221
6.9.2 調試器        222
6.10 線程        223
6.10.1 HP-UX和Linux上的線程支持        224
6.10.2 HP-UX DCE和POSIX線程的
區(qū)別        227
6.10.3 調試Linux線程        228
6.10.4 C++異常和Linux線程        233
6.10.5 鏈接線程安全的庫        239
6.11 信號        239
6.11.1 信號動作        239
6.11.2 簡單信號        240
6.11.3 信號發(fā)送        241
6.11.4 Linux的信號支持        242
6.11.5 POSIX信號捕獲函數        242
6.11.6 信號信息        243
6.11.7 信號默認動作        245
6.12 HP-UX上的系統調用和Linux上的
對應調用        246
6.12.1 檢查POSIX API支持        246
6.12.2 檢查Linux內核版本        251
6.13 系統庫        251
6.14 GNU科學庫        252
6.15 HP-UX和Linux API        253
6.15.1 glibc版本        253
6.15.2 glibc遵循的標準        254
6.15.3 HP-UX上的一些不可移植的
編程用法        254
6.16 進程間通信        254
6.16.1 管道        255
6.16.2 FIFO        255
6.16.3 POSIX消息隊列        255
6.16.4 POSIX信號量        256
6.16.5 POSIX共享內存        257
6.16.6 系統V共享內存        257
6.16.7 系統V消息        257
6.16.8 系統V信號量        258
6.17 小結        258
第7章 測試和調試        260
7.1 使用GNU調試器        260
7.1.1 編譯可以使用GDB的程序        260
7.1.2 調用GDB        261
7.1.3 GDB基本命令        261
7.1.4 調試多進程        262
7.1.5 調試多線程應用程序        263
7.1.6 停止多線程程序        266
7.1.7 GDB初始化文件        267
7.1.8 GDB和信號        267
7.1.9 GDB的圖形化前端        269
7.2 strace和ltrace        270
7.3 cscope工具        270
7.4 glibc調試支持        272
7.5 內存調試工具        274
7.5.1 Electric Fence        274
7.5.2 GNU/Linux mtrace、mcheck、MALLOC_CHECK        275
7.5.3 Mpatrol        276
7.5.4 dmalloc        277
7.5.5 valgrind        277
7.5.6 Rational Purify        278
7.5.7 Insure++        278
7.6 靜態(tài)程序檢查器        279
7.6.1 Splint        279
7.6.2 CodeSonar        279
7.7 線程跟蹤工具        279
7.8 性能監(jiān)測工具        280
7.8.1 內部視角        280
7.8.2 外部視角        286
7.8.3 其他工具        290
7.9 小結        292
附錄A Solaris到Linux參考表        293
附錄B AIX到Linux參考表        319
附錄C HP-UX到Linux參考表        334
附錄D POWER上的Linux        384
附錄E gprof helper        387
附錄F IBM zSeries大型機相關的
移植問題        390
附錄G Solaris到Linux移植:系統
管理員指南        397

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.stefanvlieger.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號