我正在尝试使用-fltoGCC(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
...
Run Code Online (Sandbox Code Playgroud)
在那之后,当然,我得到一些函数的几个"未定义的引用".
我做了一些研究,发现它可能是因为ar我应该尝试使用gcc-ar,但我不确定我该怎么做.
另外,我正在使用不支持lto的CMake(除了某些平台上的intel编译器,所以我读了......).尽管如此,我尝试使用:
set_property(TARGET glsl_optimizer PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
Run Code Online (Sandbox Code Playgroud)
哪个没用.
此外,我尝试了GCC的-fuse-linker-plugin旗帜,但没有奏效.
我想我将不得不手动使用旧的方式直接使用gcc-ar,或者可能还有其他一些方法?