-1

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

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

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

4

1 回答 1

1

这是指提高优化质量的链接器插件;可能构建正在使用 flag -fuse-linker-plugin

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

[...]

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

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

于 2016-03-06T00:32:44.550 回答