"Symbol from plugin" 链接器错误
"Symbol from plugin" in linker error
所以,我做了一些愚蠢的事情并给自己带来了一个链接器错误:
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)':
我很好奇 "symbol from plugin" 部分是什么意思?在我遇到链接器错误的各种冒险经历之前,我从未见过这种情况。在这种情况下,"plugin" 是什么?
这是指提高优化质量的链接器插件;可能构建正在使用标志 -fuse-linker-plugin
.
When supported by the linker, the linker plugin (see -fuse-linker-plugin) passes information to the compiler about used and externally visible symbols.
[...]
This information specifies what symbols can be accessed externally (by non-LTO object or during dynamic linking).
http://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Optimize-Options.html
所以,我做了一些愚蠢的事情并给自己带来了一个链接器错误:
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)':
我很好奇 "symbol from plugin" 部分是什么意思?在我遇到链接器错误的各种冒险经历之前,我从未见过这种情况。在这种情况下,"plugin" 是什么?
这是指提高优化质量的链接器插件;可能构建正在使用标志 -fuse-linker-plugin
.
When supported by the linker, the linker plugin (see -fuse-linker-plugin) passes information to the compiler about used and externally visible symbols.
[...]
This information specifies what symbols can be accessed externally (by non-LTO object or during dynamic linking).
http://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Optimize-Options.html