Просто дополняя приведенные выше ответы:
По умолчанию программа генерируется в модели малого кода , что в основном означает, что ее символы должны быть связаны в нижних 2 ГБ адресного пространства,
Если они не подходят, решением может быть использование модели среднего кода , что означает, что программные и маленькие символы связаны в нижних 2 ГБ адресного пространства, а большие символыположить в большие разделы данных или bss, расположенные выше 2BG (аннотация от man gcc ).Большие символы определяются с использованием -mlarge-data-threshold , поэтому можно провести некоторую оптимизацию, но учтите, что это значение должно быть одинаковым для всех объектов.
g++ -mcmodel=medium ....