Когда я составлял новое программное обеспечение, я столкнулся с множеством ошибок, испущенных ld
.Что означает эта ошибка связывания?
/usr/lib/libstreamanalyzer.so.0: undefined reference to `[email protected]_2.4.30'
/usr/lib/libstreamanalyzer.so.0: undefined reference to `[email protected]_2.6.1'
/usr/lib/libstreamanalyzer.so.0: undefined reference to `[email protected]_2.4.30'
Это кажется запутанным. Предполагается, что линкер ищет символы в объектах, а не имена библиотек, но, похоже, в этом случае те, которые перед @ являются именем функции/символом, а LIBXML2_2.6.1
- это имя библиотеки. А для динамической библиотеки версия версии sonate x.y.z должна иметь значение только в стадии динамической компоновки, то есть когда исполняемый файл действительно выполняется.
Так что же означает эта ошибка, и какая часть вышеуказанных допущений неверна?
Edit:
Проблема возникает после установки libxml2 2.7.8. Он исчез после того, как libxml2 обновлен до 2.9.1.
OK. Таким образом, это «функция» GNU и не является частью стандартного * C * или * C++ *. – WiSaGaN
Стандартные 'C' или' C++ 'не имеют понятия исходного файла, объектного файла или библиотеки. Но да: версированные символы - это расширение GNU для POSIX. –
Оба стандарта C и C++ имеют нечто, называемое * Standard Library * afaik. – WiSaGaN