Статически связанный исполняемый файл с LTO (оптимизация времени соединения): как сделать это с ранее созданными библиотеками

В 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, я думаю:

  1. B) лучше, чем A), потому что позволяет больше кода (в частности, кода в ZeroMQ) для оптимизации во время соединения.

  2. А) все же лучше, чем вообще не использовать LTO.

Правильно ли мое понимание? Спасибо!

2

Решение

Я действительно изо всех сил пытаюсь сделать это ответом, а не комментарием, но это является ответ:

Да, ваше понимание верно.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]