What are Shared Libraries?..................................................................................................... | 91 |
The Dynamic Loader .......................................................................................................... | 91 |
Default Behavior When Searching for Libraries at Run Time..................................................... | 91 |
Caution on Using Dynamic Library Searching........................................................................ | 92 |
Running setuid Programs..................................................................................................... | 92 |
Example Program Comparing Shared and Archive Libraries......................................................... | 92 |
Shared Libraries with Debuggers, Profilers, and Static Analysis..................................................... | 94 |
Profiling Shared Libraries with gprof(1) ................................................................................. | 94 |
Creating Archive Libraries........................................................................................................ | 94 |
Overview of Creating an Archive Library............................................................................... | 95 |
Contents of an Archive File.................................................................................................. | 95 |
Example of Creating an Archive Library................................................................................ | 96 |
Replacing, Adding, and Deleting an Object Module.............................................................. | 97 |
Replacing or Adding an Object Module........................................................................... | 97 |
Deleting an Object Module............................................................................................ | 97 |
Summary of Keys to the ar(1) Command................................................................................ | 97 |
Useful ar Keys............................................................................................................... | 97 |
crt0.o.......................................................................................................................... | 98 |
Archive Library Location (IPF) .............................................................................................. | 98 |
Using /usr/lib and /usr/lib/pa20_64 ........................................................................... | 98 |
Using /usr/local/lib or /usr/contrib/lib.......................................................................... | 98 |
Creating Shared Libraries........................................................................................................ | 98 |
Creating Position-Independent Code (PIC)............................................................................. | 99 |
Example Using +z......................................................................................................... | 99 |
Comparing +z and +Z................................................................................................... | 99 |
Compiler Support for +z and +Z..................................................................................... | 99 |
Creating the Shared Library with ld...................................................................................... | 99 |
Shared Library Dependencies............................................................................................ | 100 |
The Order in Which Libraries are Loaded (Load Graph)................................................... | 100 |
Placing Loaded Libraries in the Search List...................................................................... | 101 |
Updating a Shared Library................................................................................................ | 102 |
Incompatible Changes to a Shared Library..................................................................... | 102 |
Shared Library Location (IPF)............................................................................................. | 102 |
Improving Shared Library Performance................................................................................ | 102 |
Loading Shared Libraries with the LD_PRELOAD Environment Variable................................ | 103 |
LD_PRELOAD Example................................................................................................. | 103 |
LD_PRELOAD Example (PA-RISC)................................................................................... | 104 |
64-bit Behavior...................................................................................................... | 104 |
32-bit Behavior....................................................................................................... | 105 |
Loading Shared Libraries with the LD_PRELOAD_ONCE Environment Variable..................... | 106 |
Using Profile-Based Optimization on Shared Libraries....................................................... | 106 |
Exporting Only the Required Symbols............................................................................ | 106 |
Placing Frequently-Called Routines Together.................................................................... | 106 |
Making Shared Libraries Non-Writable.......................................................................... | 107 |
Using the +ESlit/+Olit=all Option to cc.......................................................................... | 107 |
+cond_rodata Command-Line Option............................................................................ | 108 |
Using Filtered Shared Libraries (32-bit Mode Only).......................................................... | 108 |
Building Filtered Shared Libraries.............................................................................. | 108 |
Building application programs linked to filtered shared libraries.................................... | 109 |
Run time behavior of filtered shared libraries.............................................................. | 109 |
Initializers.............................................................................................................. | 109 |
Dynamic Path Lookup.............................................................................................. | 110 |
Thread-Private Data (TLS)......................................................................................... | 110 |
Maintaining filtered shared libraries.......................................................................... | 110 |
Function Level Versioning.................................................................................................. | 110 |