Скорее всего, это связано с несовместимостью компилятора, используемого для создания Drake (например, clang
), и компилятором, выбранным CMake (например, gcc-4.9
).В частности, gcc-4.9
или ранее не склонны хорошо обрабатывать DualABI при связывании с clang
-компилированным кодом ( ref ).Вы можете использовать другие функции, поскольку только те функции, которые возвращают ABI-зависимый класс (например, std::string
), помечены тем ABI, который они используют (поскольку их нельзя различить в сигнатуре функции).
Исправлено изменение компилятора, который использует CMake.Один из способов сделать это - установить переменные окружения CC
и CXX
для использования поддерживаемого компилятора.Список поддерживаемых компиляторов см. В Поддерживаемые конфигурации .Если вы используете предварительно скомпилированные двоичные файлы, пожалуйста, обратитесь к Двоичные пакеты для используемых компиляторов.
ВНИМАНИЕ: НЕ меняйте компилятор с помощью update-alternatives
в Ubuntu, так как это может повлиять на вашСовместимость модуля DKMS с ядром (между прочим) ( ref ).