The General options category lets you specify various options for the linker.
The default dialog for the General options category.
Field descriptions for the General options category
Generate map file
- When set, the IDE prints a link map to the build console.
- Define the size of the stack as the number of bytes (in decimal) you want for the stack.
Export symbol options
- Define the level of final stripping for your binary, ranging from exporting all symbols, to only removing the debugger symbols, to removing all of them.
Build goal name
- Specify the output filename for an application or library project. The name you specify in this field forces the library's shared-object name to match.
By default, a generated application has the same name as the project it's built from. A library has prefix of lib and a suffix of .a or .so after the project name. In addition, debug variants of applications and libraries have a suffix of _g.
- Link against CPP library (valid for C++ projects only)
- Select the particular C++ library you want to use. QNX Momentics Tool Suite currently ships with these C++ libraries:
— The standard QNX C++ library, with support for all standard C++ features (exceptions, STL, etc.).
- Dinkum with exceptions and Dinkum without exceptions
— The Dinkum C++ library, with support for exceptions or without.
- Dinkum Abridged with exceptions and Dinkum Abridged without exceptions
— The Dinkum Abridged C++ library, with support for exceptions or without.
- Dinkum Embedded with exceptions and Dinkum Embedded without exceptions
— The Dinkum Embedded C++ library, with support for exceptions or without.
- GNU with exceptions
— The GNU G++ Standard Library, with support for exceptions.
Note: Compiling C++ code without support for exceptions usually results in a faster executable.
Library shared object name
- Override the shared-object name used in C/C++ library projects. This override doesn't affect the actual filename.
Note: If you specify a filename in the Build goal name field, don't use the Library shared object name field.
- Select a version number for both the library's shared-object name and filename. If this is a library that doesn't have a version number (e.g. platform.so), then select No.
The so version comes from the linker option. For example, if you're using a QNX project for the library project, right-click and select , and then select General options for the Category type. You can see that the Default for the Library version on the Linker tab is 1".
If you specify No, then the SONAME isn't hard coded in the library.
When it is so.1,the loader requires the library to be called exactly like this because all dependent projects refer to is as so.1 (in the NEEDED section of executable).
If you use the IDE to upload libraries to the target during a launch, it silently renames it to the proper version, and makes a copy in the host directory so that the host tools (i.e., debugger) can find it as well.
If you manually upload a library to a target, you have to manually rename it because it isn't necessary if you don't need to keep the library versioning (it is better not to use it at all).
Note: If Build goal name is specified, you cans still set the library version.
- Specify any other command line options that aren't already covered on the Linker tab. For more information about the linker's options, see the entry for
in the Utilities Reference.
- Shows the general linker options that you specified.
When a shared library is created, it's name is documented in a special dynamic section, and when you link against this library, your application will look for that name.
When you perform a make install, the .so is copied to .so.1, and a .so symbolic link is created to point to it. You'll also notice that .so will get the right version. If you install a .so.2 (where the .so points to it), your old version 1 clients can still run.