Book description
Port Your UNIX® Applications to Linux®–Quickly, Efficiently, and Reliably
Increasingly, developers, architects, and project managers face the challenge of porting their C, C++, and Java applications from UNIX® to Linux® environments. Now, there’s a definitive, start-to-finish guide to porting applications from today’s most widely used UNIX platforms: Solaris™, HP-UX, and AIX®.
Three of IBM’s most-experienced Linux porting specialists lead you through your entire project: scoping, analysis, recoding, and testing. They present a start-to-finish porting methodology, realistic discussions of key porting tasks, and a questionnaire for assessing the work involved in any new project. You’ll discover what Linux offers in terms of APIs, library functions, versioning, system features, and tools–and the implications for your project. Next, the authors address each individual UNIX® platform in detail, identifying specific porting challenges and best-practice solutions. Coverage includes
· Understanding the Linux environment: GNU binutils, Java environments, shells, packaging options, and more
· Uncovering and addressing project unknowns, variables, and other risks
· Handling specific platform differences: standards, compilers, linkers, versioning, system/library calls, threads, and more
· Testing and debugging ported applications using the GNU debugger and Linux memory leak and performance tracing tools
· Contains quick references to UNIX® and Linux APIs, compilers, and linker options, and a discussion of porting issues unique to IBM’s POWER™ architecture
Whether you need a start-to-finish guide or a concise reference, you’ll find this book an indispensable resource for all your UNIX®-to-Linux porting projects.
Table of contents
- Copyright
- Prentice Hall Open Source Software Development Series
- Preface
- Acknowledgments
- About the Authors
- 1. Porting Project Considerations
- 2. Scoping
-
3. Analysis
- 3.1. Linux Standards
- 3.2. GNU libc
- 3.3. GNU Scientific Library
- 3.4. Shared Libraries
- 3.5. Library Versioning,
- 3.6. Dynamic Linker (or Runtime Linker)
- 3.7. System Calls
- 3.8. Large Page Support
- 3.9. The Native POSIX Threads Library (NPTL)
- 3.10. Internationalization (I18N) and Localization
- 3.11. Big/Little-Endian Environment
- 3.12. 32- to 64-Bit Migration
- 3.13. Summary
-
4. Porting Solaris Applications
- 4.1. Preliminary Tasks
- 4.2. General Differences
- 4.3. Compilers
- 4.4. Linker
- 4.5. Porting Shell Scripts to Linux
- 4.6. Internationalization and Localization
-
4.7. Make
- 4.7.1. Built-In Makefile Variables for C++
- 4.7.2. Library Dependencies
- 4.7.3. Empty Rules
- 4.7.4. Current Targets
- 4.7.5. SCCS and RCS Files
- 4.7.6. Conditional Macro Assignment
- 4.7.7. Pattern-Replacement Macro References
- 4.7.8. VPATH
- 4.7.9. Command Execution
- 4.7.10. Special Targets
- 4.7.11. Environment Variables
- 4.7.12. Exit Status
- 4.8. Debugger
- 4.9. Threads
- 4.10. Signals
- 4.11. System Calls
- 4.12. System Libraries
- 4.13. Solaris and Linux APIs
- 4.14. Scientific Library
- 4.15. Large Page Support
- 4.16. Some Solaris Nonportable Programming Practices
- 4.17. Summary
-
5. Porting AIX Applications
- 5.1. Preliminary Tasks
- 5.2. General Differences
- 5.3. Compilers
- 5.4. Make
- 5.5. Linker
- 5.6. AIX Versus Linux Shared Library Creation
- 5.7. Dynamic Loading
- 5.8. Template Instantiation Differences Between AIX and Linux
- 5.9. C++filt Utility
- 5.10. System APIs: AIX/Linux
-
5.11. Selected AIX/Linux System API Comparisons
- 5.11.1. getfsent(), getfsfile(), getfstype(), getfsspec()
- 5.11.2. ioctl()
- 5.11.3. read(), write()
- 5.11.4. confstr()
- 5.11.5. opendir()
- 5.11.6. readdir()
- 5.11.7. fcntl()
- 5.11.8. llseek(), lseek(), lseek64()
- 5.11.9. uname()
- 5.11.10. syslog(), closelog(), openlog()
- 5.11.11. swapoff(), swapon()
- 5.11.12. acct()
- 5.11.13. mmap(), mmap64(), munmap()
- 5.11.14. pread(), pwrite()
- 5.11.15. stat(), lstat(), fstat()
- 5.11.16. ptrace()
- 5.11.17. setgid(), setregid()
- 5.11.18. sync()
- 5.11.19. wait3(), wait4()
- 5.11.20. getcwd()
- 5.11.21. mount(), umount(), vmount()
- 5.11.22. readv(), writev()
- 5.11.23. select()
- 5.11.24. reboot()
- 5.11.25. chroot()
- 5.11.26. fstatfs(), statfs()
- 5.11.27. poll()
- 5.11.28. quotactl()
- 5.12. Some AIX Nonstandard Programming Practices
- 5.13. Signals
- 5.14. Network Programming
- 5.15. Interprocess Communications
- 5.16. POSIX Threads
- 5.17. Large Page Support
- 5.18. Common APIs
- 5.19. Summary
-
6. Porting HP-UX Applications
- 6.1. Preliminary Tasks
- 6.2. General Differences
- 6.3. The Compilers
- 6.4. Linker
- 6.5. Library Versioning
- 6.6. Dynamic Linking and Shared Libraries
- 6.7. Porting Shell Scripts to Linux
- 6.8. Internationalization (I18N)
- 6.9. Software Development Tools
- 6.10. Threads
- 6.11. Signals
- 6.12. HP-UX System Calls and Linux Equivalents
- 6.13. System Libraries
- 6.14. GNU Scientific Library
- 6.15. HP-UX and Linux APIs
- 6.16. Interprocess Communications
- 6.17. Summary
- 7. Testing and Debugging
- A. Solaris to Linux Reference Tables
- B. AIX to Linux Reference Tables
- C. HP-UX to Linux Reference Tables
- D. Linux on POWER
- E. gprof helper
- F. Porting Issues Specific to the IBM zSeries Mainframe
-
G. Solaris to Linux Migration: A Guide for System Administrators
- G.1. Packaging Tasks
- G.2. Installation and Upgrade Tasks
- G.3. User Management Tasks
- G.4. Network Management and Configuration
- G.5. NFS Management and Configuration
- G.6. Managing System Resources
- G.7. Disk and Filesystem Management
- G.8. Swap Management
- G.9. Logical Volume Management
- G.10. General Troubleshooting
- G.11. Network Troubleshooting
- G.12. Configuration and Other Files
- G.13. Comparable Commands
Product information
- Title: UNIX to Linux
- Author(s):
- Release date: April 2006
- Publisher(s): Pearson
- ISBN: 0131871099
You might also like
book
Linux
Linux is a fast-growing operating system with power and appeal, and enterprises worldwide are quickly adopting …
book
Advanced UNIX Programming
Advanced UNIX Programming goes beyond the fundamentals of UNIX programming and presents information and techniques the …
book
Embedded Linux for Developers
Leverage the power of Linux to develop captivating and powerful embedded Linux projects About This Book …
book
Developing and Porting C and C++ Applications on AIX
This IBM Redbook will help experienced UNIX application developers who are new to the AIX operating …