Использование оптимизации времени соединения GCC со статическими связанными библиотеками
Я пытаюсь использовать оптимизацию времени соединения с-flto
флаг GCC (6.1.1).
Хотя он отлично работает с моим кодом, он не связывается со статической связанной библиотекой, которую я также строю и связываю с моим проектом (которыйдвигатель и библиотекаGLSL-оптимизатор, только для справки).
Вот вывод:
...
/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
...
И после этого, конечно, я получаю несколько «неопределенных ссылок» на некоторые функции.
Я провел некоторое исследование и выяснил, что это может быть из-заar
и я должен попытаться использоватьgcc-ar
, но я не уверен, как я мог бы сделать это.
Кроме того, я использую CMake, который не поддерживает lto (за исключением компилятора Intel на некоторых платформах, поэтому я прочитал ...). Хотя я пытался использовать:
set_property(TARGET glsl_optimizer PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
Который не работал.
Кроме того, я попробовал GCC-fuse-linker-plugin
флаг, который не работал.
Я думаю, мне придется сделать это вручную по-старому напрямую, используяgcc-ar
или, может быть, есть какой-то другой метод?