2016-03-06 1 views
-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)': 

Мне интересно то, что «символ из плагина» часть средств? Я никогда не видел этого раньше в своих различных приключениях с ошибками компоновщика. Что такое «плагин» в этом контексте?

ответ

1

Это ссылка на плагин-компоновщик, который улучшает качество оптимизации; вероятно, сборка использует флаг -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

Смежные вопросы