C ++编译器不支持C ++ 11(例如std :: unique_ptr)。建立OpenWRT

时间:2019-04-20 10:45:32

标签: c++ cmake g++ openwrt

我正在使用说明herehere在ubuntu中构建OpenWRT,但得到:

make[4]: Entering directory '~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk'
make[4]: 'cmake' is up to date.
make[4]: Leaving directory '~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk'
loading initial cache file ~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk/InitialCacheFlags.cmake
CMake Error at CMakeLists.txt:92 (message):
  The C++ compiler does not support C++11 (e.g.  std::unique_ptr).


-- Configuring incomplete, errors occurred!

有一个解决类似问题的方法here,但是我不清楚哪个CMakeLists.txt文件是我的情况下的“根”。在OpenWRT论坛(或一般的搜索引擎)上看不到有关此失败的消息。

我得到的印象是CMake安装是由OpenWRT构建器本身下载的,因为我没有安装CMake,而安装cmake却无法解决任何问题。

尝试签出最新的OpenWRT v18.06.2。当构建失败时,我删除了克隆目录并尝试使用v18.06.0-rc2。没有任何改善。

也尝试过

  

导出CMAKE_CXX_STANDARD = 11

在运行“ make”之前 ...无法解决问题。

我的g ++安装状态:

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.3.0-27ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)

好吧,那是我五个小时的想法了。这是配置错误还是开发端的错误?

如果配置错误,那可能是错误的设置?

3 个答案:

答案 0 :(得分:1)

我将解决方案粘贴到这里,以便有人可以得到我的提示(或者可能不是因为这个原因)

在搜索了数百万个页面之后,人们只是在谈论为什么而不是如何,我的解决方案很简单:

将cmake源代码复制到我的系统驱动器中。如果您在远程hardrive上执行cmake,则将失败和出错,就像上面一样

答案 1 :(得分:0)

我的糟糕经历可以帮助他人。我有gcc 7.4.0。在同一台机器上,配置程序包没有问题。有一天,我决定构建一个优化版本

export CXXFLAGS=O3

configure
... many lines ignored
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... no
checking whether g++ supports C++11 features with +std=c++11... no
checking whether g++ supports C++11 features with -h std=c++11... no
checking whether g++ supports C++11 features with -std=c++0x... no
checking whether g++ supports C++11 features with +std=c++0x... no
checking whether g++ supports C++11 features with -h std=c++0x... no
configure: error: *** A compiler with support for C++11 language features is required.

注意:导出CXXFLAGS =“-O3”后,我的问题消失了。错字缺少破折号。希望这可以帮助许多其他人。大多数困难是由我们犯的细微错误引起的。

答案 2 :(得分:0)

在将MAKEFLAGS设置为“ -j8”时,出现相同的错误(在Linux桌面上,与OpenWRT无关)。这是因为警告gmake[1]: warning: -jN forced in submake: disabling jobserver mode.使cmake测试认为出现了问题。咄。 解决方法:unset MAKEFLAGS

无论如何,调查此错误的方法是读取CMakeFiles / CMakeError.log