For use with dynamic linking
To
compile a shared library that uses dynamic linking:
- Compile each source file into an object file, with no linking.
For example:
xlc -c test1.c -o test1.o
- Optional: Create an export file listing the global
symbols to be exported, by doing one of the following:
- Use the -qmkshrobj option to create
a shared library from the generated object files.
- If you created an export file in step 2, use the -bE linker
option to use your global symbol export list. If you do not specify
a -bE option, all the global symbols are exported except for those symbols that have the hidden
or internal visibility attribute.
For example: xlc -qmkshrobj -o mySharedObject.o test1.o test2.o -bE:exportlist
Notes: - The default name of the shared object is shr.o,
unless you use the -o option to specify another
name.
- Exporting some functions (such as restf# where # is
a number) might cause incorrect execution. If any files
in the shared library use floating point and are compiled with the -qtwolink option,
do not export the restf# or equivalent floating-point
utility functions.
- Optional: Use the AIX® ar command
to produce an archive library file from multiple shared or static
objects. For example:
ar -rv libtest.a mySharedObject.o myStaticObject.o
- Link the shared library to the main application, as described
in Linking a library to an application.
For use with runtime linking
To create a
shared library that uses runtime linking:
- Follow steps 1 and 2 in the procedure described above.
- Use the -G option to create a shared
library from the generated object files, and to enable runtime linking
with applications that support it.
- If you created an export file, use the -bE linker
option to use your global symbol export list. If you do not specify
a -bE option, all the global symbols are exported except for those symbols that have the hidden
or internal visibility attribute.
For example: xlc -G -o libtest.so test1.o test2.o -bE:exportlist
- Link the shared library to the main application using
the -brtl option, as described in Linking a library to an application.
Dynamic loading of a shared library
Shared
libraries built for either dynamic or runtime linking can be dynamically
loaded. See the AIX documentation
for more information about using the dynamic loading routines:
Related external information