我正在尝试在 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 调用中。