Вероятно, простой ответ; Я немного смущен языком, используемым в документации GCC для некоторых из этих флагов!
Во всяком случае, у меня есть три библиотеки и программа, которая использует все эти три. Я собираю каждую из моих библиотек отдельно с отдельными (потенциально) различными наборами предупреждающих флагов. Однако я компилирую все три библиотеки с тем же набором флагов оптимизации.
Затем я компилирую свою основную программу, связывающую эти три библиотеки с собственным набором предупреждающих флагов и теми же самыми флажками оптимизации, которые использовались во время компиляции библиотек.
1) Нужно ли мне компилировать библиотеки с флагами оптимизации или я могу просто использовать эти флаги при компиляции окончательной программы и связывании с библиотеками? Если последний, то будет ли он оптимизировать все или только некоторые (предположительно, что называется) кода в этих библиотеках?
2) Я хотел бы использовать -fwhole-program -flto -fuse-linker-plugin и плагин-плагин-плагин. На каком этапе я компилирую с ними... только окончательная компиляция или эти флаги должны присутствовать во время компиляции библиотек?
3) В значительной степени то же самое, что и 2), однако, с -fprofile-generate -fprofile-arcs и -fprofile-use. Я понимаю, что сначала запускается программа с генерации, а затем с использованием. Однако мне нужно скомпилировать каждую из библиотек с помощью генерации/использования и т.д. Или только для окончательной программы? И если это только последняя программа, когда я затем компилирую с использованием -fprofile, она также оптимизирует функциональность библиотек?