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.