CMAKE 错误:"cc: error: unrecognized command line option ‘-std=c++20’; did you mean ‘-std=c++2a’?"



我正在尝试从源代码编译二进制文件,但在这样做时不断遇到错误。

$ cmake --build ./[binary_dir]/
[  0%] Building C object [binary_dir]/CMakeFiles/ZIPLIB.dir/extlibs/bzip2/bcompress.c.o
cc: error: unrecognized command line option ‘-std=c++20’; did you mean ‘-std=c++2a’?
make[2]: *** [[binary_dir]/CMakeFiles/ZIPLIB.dir/build.make:154: [binary_dir]/CMakeFiles/ZIPLIB.dir/extlibs/bzip2/bcompress.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:307: [binary_dir]/CMakeFiles/ZIPLIB.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

特别是,">cc: error: unrecognized command line option ' -std=c++20 ';你是说' -std=c++2a '吗?!">

我怀疑这与使用不正确的gcc版本有关;我安装了多个版本,但我认为我需要使用最新的,或者至少11.1.0。我已经安装了这些版本:

$ ls -l /usr/bin/gcc*
lrwxrwxrwx 1 root root  5 Mar 20  2020 /usr/bin/gcc -> gcc-9
lrwxrwxrwx 1 root root 23 May 29  2021 /usr/bin/gcc-10 -> x86_64-linux-gnu-gcc-10
lrwxrwxrwx 1 root root 23 Apr 28  2021 /usr/bin/gcc-11 -> x86_64-linux-gnu-gcc-11
lrwxrwxrwx 1 root root 22 Mar  9 12:57 /usr/bin/gcc-9 -> x86_64-linux-gnu-gcc-9
lrwxrwxrwx 1 root root  8 Mar 20  2020 /usr/bin/gcc-ar -> gcc-ar-9
lrwxrwxrwx 1 root root 26 May 29  2021 /usr/bin/gcc-ar-10 -> x86_64-linux-gnu-gcc-ar-10
lrwxrwxrwx 1 root root 26 Apr 28  2021 /usr/bin/gcc-ar-11 -> x86_64-linux-gnu-gcc-ar-11
lrwxrwxrwx 1 root root 25 Mar  9 12:57 /usr/bin/gcc-ar-9 -> x86_64-linux-gnu-gcc-ar-9
lrwxrwxrwx 1 root root  8 Mar 20  2020 /usr/bin/gcc-nm -> gcc-nm-9
lrwxrwxrwx 1 root root 26 May 29  2021 /usr/bin/gcc-nm-10 -> x86_64-linux-gnu-gcc-nm-10
lrwxrwxrwx 1 root root 26 Apr 28  2021 /usr/bin/gcc-nm-11 -> x86_64-linux-gnu-gcc-nm-11
lrwxrwxrwx 1 root root 25 Mar  9 12:57 /usr/bin/gcc-nm-9 -> x86_64-linux-gnu-gcc-nm-9
lrwxrwxrwx 1 root root 12 Mar 20  2020 /usr/bin/gcc-ranlib -> gcc-ranlib-9
lrwxrwxrwx 1 root root 30 May 29  2021 /usr/bin/gcc-ranlib-10 -> x86_64-linux-gnu-gcc-ranlib-10
lrwxrwxrwx 1 root root 30 Apr 28  2021 /usr/bin/gcc-ranlib-11 -> x86_64-linux-gnu-gcc-ranlib-11
lrwxrwxrwx 1 root root 29 Mar  9 12:57 /usr/bin/gcc-ranlib-9 -> x86_64-linux-gnu-gcc-ranlib-9

如果这是问题,我如何指定使用哪个版本的gcc ?这是否会发生在makefile/cmakelist本身,作为我需要在环境中指定的路径,或者作为调用cmake时应用的标志?

或者错误提示其他解决方案?

假设您在构建目录中:

你可以在运行cmake的原始调用时设置CMAKE_C_COMPILER。

cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-11 ..
cmake --build .

最新更新