链接器错误中的“来自插件的符号”

时间:2016-03-06 00:25:33

标签: c++ linker clang++ gold-linker

所以,我做了一些愚蠢的事情,并给自己一个链接器错误:

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)':

我很好奇“插件中的符号”部分是什么意思?在我遇到链接器错误的各种冒险之前,我从未见过这种情况。在这种情况下,什么是“插件”?

1 个答案:

答案 0 :(得分:1)

这是指一个提高优化质量的链接器插件;可能构建使用标志-fuse-linker-plugin

  

当链接器支持时,链接器插件(请参阅-fuse-linker-plugin)将有关已使用和外部可见符号的信息传递给编译器。

     

[...]

     

此信息指定可以从外部访问哪些符号(通过非LTO对象或在动态链接期间)。

http://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Optimize-Options.html