所以,我做了一些愚蠢的事情,并给自己一个链接器错误:
CMakeFiles/pipeline.dir/src/pipeline/pipelineElements/tracker/ObjectTracker.cpp.o (symbol from plugin): In function `ObjectTracker::process(long)':
(.text+0x0): multiple definition of `BackgroundSubtract::OptionTypes<(BackgroundSubtractOptionID)0>::type PipelineConfiguration::getOption<BackgroundSubtract, (BackgroundSubtractOptionID)0>(BackgroundSubtract const&) const'
CMakeFiles/pipeline.dir/src/pipeline/pipelineElements/RegionFinder.cpp.o (symbol from plugin):(.text+0x0): first defined here
CMakeFiles/pipeline.dir/src/pipeline/pipelineElements/tracker/ObjectTracker.cpp.o (symbol from plugin): In function `ObjectTracker::process(long)':
我很好奇“插件中的符号”部分是什么意思?在我遇到链接器错误的各种冒险之前,我从未见过这种情况。在这种情况下,什么是“插件”?
答案 0 :(得分:1)
这是指一个提高优化质量的链接器插件;可能构建使用标志-fuse-linker-plugin
。
当链接器支持时,链接器插件(请参阅-fuse-linker-plugin)将有关已使用和外部可见符号的信息传递给编译器。
[...]
此信息指定可以从外部访问哪些符号(通过非LTO对象或在动态链接期间)。
http://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Optimize-Options.html