где спросить еще, поэтому пришел сюда.
Я собираю gcc5 для своих нужд. Далее я пробую собрать тестовый проект и получаю ODR violation следующего вида
clang++ --gcc-toolchain=/opt/gcc5 -B /usr/lib/gold-ld -Wl,--detect-odr-violations,-L/opt/gcc5 some.cpp.o
/usr/lib/gold-ld/ld: warning: while linking Sample: symbol 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_strin
g<char const*>(char const*, char const*, std::allocator<char> const&)' defined in multiple places (possible ODR violation):
/var/tmp/gcc5/work/build/x86_64-linux-gnu/libstdc++-v3/include/bits/basic_string.tcc:667 from /opt/gcc5/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../lib64/libstdc++.so
/opt/gcc5/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/bits/basic_string.tcc:670 from some.cpp.o
То есть символы в libstdc++ и моем модуле отличаются, хотя взяты из одного и того же заголовочного файла.
С нормальным gcc такой проблемы нет. Явно чтото в конфигурации у меня не правильно, или я забываю какие то шаги сборки сделать. Собираю через PkgSrc. Можете подсказать на что обратить внимание чтобы исправить ODR violation?
Ошибка говорит, что одновременно используются 2 разные libstdc++
Обсуждают сегодня