Ошибка BuildFailed: не удается собрать C ++ SDK Helloworld с помощью qibuild

Я пытаюсь установить NaoQI C ++ SDK в Linux 18.04.1 (VirtualBox). Я выполнил эту инструкцию по установке: http://doc.aldebaran.com/2-1/dev/cpp/install_guide.html

Моя проблема в Части E. Шаг 3, когда я пытаюсь запустить "qibuild make"

Я получаю эту ошибку, когда пытаюсь создать пример helloworld:

CMakeFiles / testhelloworld.dir / testhelloworld.cpp.o: В функции main': /home/nounou/Documents/SDKfolder/naoqi-sdk/doc/dev/cpp/examples/core/helloworld/testhelloworld.cpp:35: undefined reference to AL :: ALBroker :: createBroker (std :: __ cxx11 :: basic_string, std :: allocator> const &, std :: __ cxx11 :: basic_string, std :: allocator> const &, int, std :: __ cxx11 :: basic_string, std :: allocator> const &, int, int, std :: __ cxx11 :: basic_string, std :: allocator>, bool) '/ home / nounou / Documents / SDKfolder / naoqi -sdk / doc / dev / cpp / examples / core / helloworld / testhelloworld.cpp: 38: неопределенная ссылка на AL::ALProxy::ALProxy(boost::shared_ptr<AL::ALBroker>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' CMakeFiles/testhelloworld.dir/testhelloworld.cpp.o: In function qi :: log :: LogStream :: ~ LogStream () ':

....

CMakeFiles / testhelloworld.dir / build.make: 113: рецепт для цели 'sdk / bin / testhelloworld' не удалось сделать [2]: * [sdk / bin / testhelloworld] Ошибка 1 CMakeFiles / Makefile2: 67: рецепт для цели 'CMakeFiles / testhelloworld.dir / all' не удалось сделать [1]: * [CMakeFiles / testhelloworld.dir / all] Ошибка 2 Makefile: 129: рецепт для целевого 'all' не удалось сделать: *** [all] Ошибка 2

[ERROR]: BuildFailed Ошибка при создании проекта hello world

Пожалуйста, помогите мне, если понимаете, в чем проблема. Спасибо!


person noudels    schedule 08.10.2018    source источник
comment
ALProxy отсутствует в вашей системе, поэтому компилятор не может установить связь. Либо он установлен, но не по пути, который может найти компилятор, либо не установлен. Проверьте, установлена ​​ли библиотека alcommon.   -  person Owl    schedule 08.10.2018
comment
Я это проверил. Библиотека alcommon установлена. Как я могу сделать так, чтобы компилятор нашел его?   -  person noudels    schedule 08.10.2018
comment
Какую версию C ++ SDK вы установили? 2.1?   -  person Emile    schedule 08.10.2018
comment
Перечисление вывода qitoolchain info может помочь понять, что именно происходит.   -  person Emile    schedule 08.10.2018
comment
Я установил версию 2.1.4.13 C ++ SDK. У меня робот NAO V4.   -  person noudels    schedule 09.10.2018
comment
@Emile nounou @ nounou-VirtualBox: ~ $ qitoolchain info Toolchain mytoolchain Использование канала из /home/nounou/Documents/SDKfolder/naoqi-sdk/toolchain.xml в основных пакетах: libnaoqi в / home / nounou / Documents / SDKfolder / naoqi- SDK   -  person noudels    schedule 09.10.2018


Ответы (2)


Скорее всего, у вас проблема несовместимости ABI из-за перехода на C ++ 11. Вы используете Ubuntu 18.04, компиляторы которого настроены для связывания с современными библиотеками C ++, но набор инструментов скомпилирован с использованием прежних ABI и не применяет флаги компилятора для обеспечения совместимости.

Чтобы обойти это, выполните одно из следующих действий:

  • Установите флаги компилятора, чтобы убедиться, что вы не связываетесь с библиотеками C ++ 11 (если кто-то их знает, поделитесь).
  • Скомпилируйте для робота вместо вашей машины, используя кросс-инструментальную цепочку вместо инструментальной цепочки Linux.
  • Используйте Ubuntu 12.04, как сказано в руководстве по установке.

Между прочим, в руководстве по установке C ++, подраздел E.4, говорится о компиляции примера под core/sayhelloworld. Здесь вы скомпилировали пример под core/helloworld.

person Victor Paléologue    schedule 08.11.2018

У меня была такая же проблема с Fedora 29 ... После нескольких часов поиска я обнаружил, что добавление набора (CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI = 0") в файл CMakeLists.txt устраняет проблему.

Я нашел решение здесь: gcc с использованием стандарта C ++ 11 даже хотя 98 явно указано

person Henry Suzukawa    schedule 01.04.2019