В Ubuntu с g ++ 4.9 я собрал статическую библиотеку (назовем ее libZeroMQ.a), следуя ее инструкциям, и она была собрана без «-flto» (оптимизация времени ссылки).
Сейчас я работаю над проектом (назовите его MyEXE), который использует libZeroMQ.a, и я буду статически связывать все библиотеки. Я хочу собрать MyEXE с помощью LTO.
У меня есть два варианта:
A) Сборка MyEXE, используя «-flto» как для компиляции, так и для компоновки. Ссылка с ранее созданным libZeroMQ.a.
B) Взломать (изменить) скрипты config / build ZeroMQ, добавить «-flto» и пересобрать libZeroMQ.a. Затем соберите MyEXE, связавшись с новым libZeroMQ.a. Конечно, по-прежнему используется «-flto» как для компиляции, так и для компоновки MyEXE.
С точки зрения производительности MyEXE, я думаю:
B) лучше, чем A), потому что позволяет больше кода (в частности, кода в ZeroMQ) для оптимизации во время соединения.
А) все же лучше, чем вообще не использовать LTO.
Правильно ли мое понимание? Спасибо!
Я действительно изо всех сил пытаюсь сделать это ответом, а не комментарием, но это является ответ:
Да, ваше понимание верно.
Других решений пока нет …