|
First, users must have enough memory on the system (both physical memory plus swap space) to create arrays with the requested sizes.
Second, the default Linux* kernel on IA-32 loads shared libraries at 1 GB, which limits the contiguous address space available to the application. If the application (code) + static data exceed 2 GB the application will suffer a load time segmentation error.
Alternative solutions are:
- Compile with -static, i.e. don't load any shared libraries.
- Allocate some of the application’s data differently, on the heap or on the stack, which will put it at a higher address than the shared libraries.
- Rebuild the system’s Linux kernel so that the shared libraries are loaded at a different default address.
- Use the prelink command to place needed shared libraries at a different (higher) address.
This applies to:
|