![您可以使用 BASH make 和 cmake 命令设置 C++ 标志吗?](https://linux22.com/image/196874/%E6%82%A8%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20BASH%20make%20%E5%92%8C%20cmake%20%E5%91%BD%E4%BB%A4%E8%AE%BE%E7%BD%AE%20C%2B%2B%20%E6%A0%87%E5%BF%97%E5%90%97%EF%BC%9F.png)
我正在使用 MX Linux debian 10 (buster),所以我认为我无法更新编译器。有没有办法可以折旧或修改以使其向后兼容?例如,我正在尝试编译 Btop,但是当我运行时,make
我收到错误 g++:
error: unrecognized command line option ‘-std=c++20’; did you mean ‘-std=c++2a’?
我可以在运行时添加一些标志或其他内容make
,以便它作为旧版本的 g++ 运行进行编译吗?我搜索了所有代码,甚至找不到一行“c++20”。请注意,我不是程序员,所以我可能错过了。
注意,当我运行 时g++ -v
,它说我正在运行版本 8.3.0,这似乎比 20 旧得多,除非我误解了它。
同样,我试图编译 tenacity (audacity 分支),当我运行时,cmake .
我得到:
CMake Error at CMakeLists.txt:12 (cmake_minimum_required):
CMake 3.15 or higher is required. You are running version 3.13.4
这也有解决办法吗?
非常感谢!
答案1
我正在使用 MX Linux debian 10 (buster),所以我认为我无法更新编译器。
当然可以。您可以从源代码(无论版本如何)编译 gcc 并在本地安装。尽管后者需要付出一些努力。
您还可以切换到新的 Debian 版本,这样就省去了您的精力。
[Btop] 我可以在运行 make 时添加一些标志或其他内容,以便它作为旧版本的 g++ 运行进行编译吗?
查看 Btop 的 Makefile,找出设置标志的内容(make -p
有帮助),或者直接更改 Makefile,或者更改 Btop 用于生成 Makefile 的任何文件。
它说我运行的是 8.3.0 版本,看起来比 20 旧很多
这是关于C++标准版本,而不是关于gcc版本。看一下这张桌子查看哪个 gcc 版本支持哪个语言标准版本。
但这并不是说,如果 Btop 源代码确实使用了编译器不支持的标准中的功能,那么 Btop 的源代码显然无法编译。如果他们只是因为想要定义要使用的标准版本而将其放在那里,那么它仍然可以在旧标准下编译。
需要 CMake 3.15 或更高版本。您正在运行版本 3.13.4
与上面相同的问题:从源代码编译 Cmake,或升级您的 Debian 版本,以便您可以使用更新的软件包。