Flylib.com

Books Software

 
 
 

Section 3.13. Summary


3.13. Summary

Analysis of the application is the most important piece of work that can be done prior to the actual porting step. If done with extreme care, it can uncover hidden gotchas that can help further refine the overall project plan. In some rare cases, the application may use platform-specific features that are not yet supported by Linux. In this case, the porting personnel have to look for a workaround or equivalent functionality in Linux. Fortunately, today's version of Linux supports the most commonly used API standards, such as POSIX threads, large pages, asynchronous I/O, message queues, 64-bit architecture, and many more. Finding equivalent functionality in lieu of the original functionality from the source platform has never been easier.

Here are some of the important highlights discussed in this chapter:

  • The document "Conflicts between ISO/IEC 9945 (POSIX) and the Linux Standard Base" elaborates on Linux standards support. [22]

    [22] www.opengroup.org/personal/ajosey/tr01-04-2005.txt

  • Linux provides support for three library versioning methodsinternal, external, and symbol versioning.

  • Through the native POSIX threads library, Linux now supports a more complete implementation of POSIX threads, which makes porting of multithreaded applications to Linux easier.

  • Linux provides large page support for applications that use large page support from UNIX platforms.

  • An environment aspect such as endianness affects those applications to be ported on a case-by-case basis. Endianness is a factor only if the application has specific routines that may be affected when coming from platforms that do not have the same bit ordering architecture as the Linux platform the application is being ported to.

  • 32- to 64-bit application migration should be treated as a separate port altogether. If the application to be ported is a 32-bit application and the port requires the application to run on Linux as a 64-bit application, treat these as two separate porting projectsthe first being the port of the 32-bit application to Linux and the second being the migration from the ported 32-bit application to a 64-bit application on Linux.

Whereas this chapter gives a picture of what Linux 2.6 has to offer in general, the porting chapters for Solaris, AIX, and HP-UX elaborate more on these technical features by citing differences and similarities between Linux and each of these UNIX platforms. The porting chapters are next .



Chapter 4. Porting Solaris Applications

In this chapter

  • 4.1

Preliminary Tasks

page 97

  • 4.2

General Differences

page 100

  • 4.3

Compilers

page 104

  • 4.4

Linker

page 137

  • 4.5

Porting Shell Scripts to Linux

page 146

  • 4.6

Internationalization and Localization

page 147

  • 4.7

Make

page 148

  • 4.8

Debugger

page 154

  • 4.9

Threads

page 155

  • 4.10

Signals

page 169

  • 4.11

System Calls

page 179

  • 4.12

System Libraries

page 186

  • 4.13

Solaris and Linux APIs

page 187

  • 4.14

Scientific Library

page 199

  • 4.15

Large Page Support

page 200

  • 4.16

Some Solaris Nonportable Programming Practices

page 200

  • 4.17

Summary

page 201


Porting is the step of the process during which modifications to the application take place. At this point, most if not all technical aspects and dependencies of the application should have already been uncovered during the scoping and analysis steps. The only thing that needs to be done now is to modify the source code so that it compiles and runs on the Linux platform.

During the porting process, software developers and porting personnel will likely encounter several differences between the UNIX operating system they are used to and the Linux 2.6 platform. For each topic discussed in this chapter, the most common differences are presented to explain what works and what does not work on the Linux 2.6 environment. The Solaris environment described in this chapter is based mostly on version 10 but should also be applicable to older versions of Solaris. Although this chapter discusses Solaris topics in some detail, it is assumed that porting engineers reading this chapter already have software development experience on Solaris.