Почему qmake передает -Wl, O1 в gcc при соединении и будет ли это вредить LTO? - PullRequest
0 голосов
/ 20 ноября 2018

Я заметил, что в конфигурации выпуска по умолчанию qmake (qmake 3.1, qt 5.9.5 - все, что установлено на моем сборочном блоке Ubuntu) передает -Wl,O1 в g ++ при компоновке. Таким образом, командная строка компоновки выглядит как

g++ -Wl,-O1 -flto -O2 -o program program.o lib1.a lib2.a ...

где -flto -O2 - параметры, которые я передаю через QMAKE_LFLAGS_RELEASE для включения LTO.

Теперь вопрос: почему qmake имеет эту опцию -Wl,-O1 и собирается ли она мешать LTO?

1 Ответ

0 голосов
/ 29 ноября 2018

QMake передает -Wl, O1, потому что он предназначен для хорошего значения по умолчанию.

Это не повредит LTO, потому что опция -O2 приходит позже и переопределяет -Wl, O1.

Со страницы руководства g ++:

Если вы используете несколько опций -O, с номерами уровней или без них, последняя такая опция - действующая.

Вы можете удалить -Wl, -O1 из вашего Makefile, указав

QMAKE_LFLAGS_RELEASE -= -Wl,-O1
...