Buildfiles

Note the following changes in the buildfiles that you use with mkifs to create OS images:

  • The version number for libc.so is now 5.
  • We've moved the runtime linker (ldd) out of libc.so. It's now in ldqnx.so.2 for 32-bit targets, and ldqnx-64.so.2 for 64-bit targets. The C Library is typically in /proc/boot in an OS image, but programs expect to find the runtime linker in /usr/lib, so you formerly had to set up a link such as the following in your mkifs buildfiles:
    • procmgr_symlink ../../proc/boot/libc.so /usr/lib/ldqnx.so.2
    • [type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so.5
    • procmgr_symlink ../../proc/boot/libc.so /usr/lib/ldqnx-64.so.2
    • [type=link] /usr/lib/ldqnx-64.so.2=/proc/boot/libc.so.5

    Now, if you mount your IFS at / (the default), you should put ldqnx.so.2 or ldqnx-64.so.2 directly in /usr/lib and delete the links.

    If you mount the IFS elsewhere, you should include ldqnx.so.2 or ldqnx-64.so.2 in your OS image and create a process manager symlink from wherever you put the file to /usr/lib/ldqnx.so.2 or /usr/lib/ldqnx-64.so.2. For example:

    • procmgr_symlink /my_ifs/ldqnx.so.2 /usr/lib/ldqnx.so.2
    • procmgr_symlink /my_ifs/ldqnx-64.so.2 /usr/lib/ldqnx-64.so.2
  • We now provide a shared version of GCC's low-level runtime library, libgcc.s (see https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html#Libgcc). You need to include libgcc_s.so.1 in OS images.
  • If you use the following line in your mkifs buildfile and you're moving to an x86_64-based target:
    [virtual=x86,elf]

    change it to use multiboot:

    [virtual=x86_64,multiboot]
  • There are two versions of the math library:
    libm
    The general-purpose math library.
    libm-sve
    A library that optimizes the code for ARMv8.2 chips that have Scalable Vector Extension hardware.

    Your system requirements will determine how you should work with these libraries:

    • If you want only selected processes to run with the SVE version, you can include both libraries in your OS image and use the -l m or -l m-sve option to qcc to link explicitly against the appropriate one.
    • If you want all processes to use the SVE version, include libm-sve.so in your OS image and set up a symbolic link from libm.so to libm-sve.so. Use the -l m option to qcc to link against the library.

For more information, see the entry for mkifs in the QNX Neutrino Utilities Reference.

Page updated: