Porting x86 Linux applications to IBM POWER
Step 3: Complete the port

Do you know how to build your application?

Yes, I have build instructions and know how to build the application

Great. Go ahead and try building it and then go to the test and troubleshooting topic

No, I need help building the application

Most of the time, you’ll follow the instructions for building the application that are found in the project’s build instructions. If you don’t know how to build the application or don’t have the build instructions, or both, here are several things you can try:

  • Check availability of build instructions
    Build instructions, which often specify the application dependencies and prerequisites are sometimes available at one of the following locations. Check each to see if they are useful or applicable to you either in part or in whole:
    • Project web page
    • GitHub home page of the project
    • Project README file/install script
    • Intel x86 Docker files
  • Check if the community has an external CI engine, such as Travis or Jenkins
    Often, build instructions can be interpreted from the build logs or the travis.yaml file.
  • Check for project specific dependency lists in the source code
    This varies from project to project and to a large extent depends on the underlying language in which the source is written. Some examples:
    • Gemfile (Ruby Projects)
    • Requirements.txt (Python projects)
    • package.json (Node.js projects)
    • Makefile (C/C++ projects)
  • Install common dependencies
    This includes the common set that may or may not have been covered in in the previous bullet and includes build essentials such as gcc/g+++, make, node.js & npm (for Node.js packages), ruby/ruby-dev (for Ruby packages) and so on.
  • Trial and error
    This is generally the last and final step. Try what you were able to find and install using the recommendations above and attempt to build the package. Other dependencies will be identified and installed if the build fails.
  • Ask for help
    If you are still unable to get your application to build, contact us and maybe we can help. Learn more >

Did your application build without errors?

After the program is successfully built, make sure you test it for runtime errors. Runtime errors are usually related to your program logic in this phase. You should also run the test programs you defined during planning to verify that the output of your application is the one you expected.

Potential issues and solutions

Dependencies (libraries, runtimes, packages and proper versions

  • Check all dependencies, especially closed-source, that are not contained in the enterprise Linux distributions or new, emerging technologies, such as a new language
  • Check OSPAT to see if dependent packages have been ported to POWER
  • Submit a request for missing source

Assembler code, including hand-coded vector (SSE) instructions

  • Intel Assembler does not run on Power
  • If you decide to install the SDK for Linux on Power, it includes helpful porting tools such as the Migration Advisor, which recognizes some common x86 assembler instructions and recommends Power equivalents

Platform-specific compiler flags and intrinsics

  • POWER-specific differences from x86
  • Often, generic compiler intrinsics can be used in place of platform-specific
  • For your C/C++ application the SDK for Linux on Power includes a tool called the Build Advisor, which scans your project build output and recommends “best practices” you can implement for improved results. It looks for compilers (type and version), optimization levels, processor-specific optimization, and other compiler and linker flags.
  • Read this blog, Porting x86 vector intrinsics code to Linux on Power in a hurry

Do you need tuning and optimization tips?

This section is coming soon. In the meantime, check out this article that provides tuning and optimization tips for Linux applications running on IBM Power Systems: Application tuning tips for Linux on Power

For even more tips and techniques, visit the the Performance Best Practices library page.

Do you plan to package and deploy the application?

If your ported application is a commercial product or you want to distribute it to third parties, you need to package the application, including libraries, documentation, and sometimes source code. Linux provides several ways to package your application:

Privacy Preference Center

Close your account?

Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?