Я пытаюсь использовать оптимизацию времени ссылки с флагом -flto
GCC (6.1.1).
Пока он отлично работает с моим кодом, он не ссылается на статическую связанную библиотеку, которую я также создаю и связываю с моим проектом (который Engine, а библиотека glsl-optimizer, только для справки).
Вот результат:
...
/usr/bin/ranlib: ir_expression_flattening.cpp.o: plugin needed to handle lto object
/usr/bin/ranlib: opt_function_inlining.cpp.o: plugin needed to handle lto object
/usr/bin/ranlib: opt_copy_propagation_elements.cpp.o: plugin needed to handle lto object
...
И после этого, конечно, я получаю несколько "undefined ссылок" на некоторые функции.
Я провел некоторое исследование и выяснил, что это может быть из-за ar
, и я должен попытаться использовать gcc-ar
, но я не уверен, как это сделать.
Кроме того, я использую CMake, который не поддерживает lto (кроме компилятора Intel на некоторых платформах, поэтому я читаю...). Несмотря на это, я попытался использовать:
set_property(TARGET glsl_optimizer PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
Что не сработало.
Кроме того, я пробовал флаг GCC -fuse-linker-plugin
, который не работал.
Думаю, мне придется вручную вручную использовать старый способ, используя gcc-ar
, или, может быть, есть другой метод?