SCons 使用开发 gcc8 构建

SCons 使用开发 gcc8 构建

我正在尝试在 CentOS7 上构建 MongoDB v4.0(https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source),并且不熟悉用于构建的 Python 工具集。该工具集需要 gcc8.2 或更新版本,我已使用devtoolset-8-gcc和安装了devtoolset-8-g++该版本。我使用 启用工具集scl enable devtoolset-8 bash并按照构建指南执行 scons 构建,但是 scons 似乎构建了自己的环境,其中不包含 处的库/opt/rh/devtoolset-8/

[user@localhost mongo.git]$ sudo scl enable devtoolset-8 bash
[sudo] password for user:
[root@localhost mongo.git]# gcc --version
gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
...
[root@localhost mongo.git]# ./buildscripts/scons.py
scons: Reading SConscript files ...
scons version: 2.5.0
python version: 2 7 5 'final' 0
...
Checking if C compiler is GCC 8.2 or newer...no
Checking if C++ compiler is GCC 8.2 or newer...no
ERROR: Refusing to build with compiler that does not meet requirements
See /opt/mongodb/mongo.git/build/scons/config.log for details

日志文件内容位于https://pastebin.com/jB2q4NxN

我尝试修改 python 脚本以包含 scons 手册中的路径,但出现了另一个错误:

[root@localhost mongo.git]# buildscripts/scons.py all
Traceback (most recent call last):
  File "buildscripts/scons.py", line 7, in <module>
    env = Environment(ENV = {'PATH' : os.environ['PATH']})
NameError: name 'Environment' is not defined

在我添加了这些行之后

import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})

添加到我的buildscripts/scons.py文件中。我是不是把它添加到了错误的地方?为什么环境变量不可用?

谢谢。

答案1

只需在 SCons 命令行上使用 CC 和 CXX 变量命名编译器的路径:

scons CC=/path/to/toolset/gcc CXX=/path/to/toolset/g++

但请注意,GCC 8 并未正式支持构建 MongoDB 4.0。您可能会发现它无法构建,或者构建时出现警告,而这些警告会被升级为错误。您可以通过--disable-warnings-as-errors在 SCons 调用中添加标志来解决其中一些问题。

您在构建中看不到环境变量的原因是 SCons 默认忽略用户环境,以便生成可重现的构建。如果您确实想让 SCons 看到当前的 shell 环境,您可以将其添加--variables-files=etc/scons/propagate_shell_environment.vars到 SCons 调用中。

相关内容