我正在尝试在Linux 18.04.1(VirtualBox)上安装NaoQI C ++ SDK。我遵循了以下安装说明:http://doc.aldebaran.com/2-1/dev/cpp/install_guide.html
我的问题出在E部分Step.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'失败make [1]:* [CMakeFiles / testhelloworld.dir / all]错误2 Makefile:129:配方 目标“全部”失败:*** [全部]错误2
[错误]:构建项目Hello World时发生BuildFailed错误
如果您对问题有任何了解,请帮助我。谢谢!
答案 0 :(得分:0)
由于过渡到C ++ 11,因此很可能您遇到了ABI不兼容的问题。您正在使用Ubuntu 18.04,该编译器已配置为与现代C ++库链接,但是该工具链是使用以前的ABI编译的,并且不执行编译器标志来确保兼容性。
要解决此问题,请执行以下任一操作:
顺便说一句,在C ++安装指南的E.4小节中,它说要编译core/sayhelloworld
下的示例。在这里,您在core/helloworld
下编译了示例。
答案 1 :(得分:0)
我在Fedora 29上遇到了同样的问题...经过几个小时的搜索,我发现将set(CMAKE_CXX_FLAGS“ -D_GLIBCXX_USE_CXX11_ABI = 0”)添加到CMakeLists.txt文件中可以解决此问题。
我在这里找到了解决方案: gcc using c++11 standard even though 98 explicitly specified