我使用 Debian 5。我正在构建 GN。我按照提供的说明进行操作这里。我正在执行这些命令:
git clone https://gn.googlesource.com/gn
cd gn
python build/gen.py
ninja -C out
执行时ninja -C out/
我收到此消息:
ninja: Entering directory `out/'
[1/238] CXX tools/gn/input_file.o
FAILED: tools/gn/input_file.o
clang++ -MMD -MF tools/gn/input_file.o.d -I/home/us/WebRTCBuild/gn -I/home/us/WebRTCBuild/gn/out -DNDEBUG -O3 -fdata-sections -ffunction-sections -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -pthread -pipe -fno-exceptions -fno-rtti -fdiagnostics-color -std=c++14 -Wno-c++11-narrowing -c /home/us/WebRTCBuild/gn/tools/gn/input_file.cc -o tools/gn/input_file.o
/bin/sh: clang++: command not found
[2/238] CXX base/callback_internal.o
FAILED: base/callback_internal.o
clang++ -MMD -MF base/callback_internal.o.d -I/home/us/WebRTCBuild/gn -I/home/us/WebRTCBuild/gn/out -DNDEBUG -O3 -fdata-sections -ffunction-sections -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -pthread -pipe -fno-exceptions -fno-rtti -fdiagnostics-color -std=c++14 -Wno-c++11-narrowing -c /home/us/WebRTCBuild/gn/base/callback_internal.cc -o
base/callback_internal.o
/bin/sh: clang++: command not found
ninja: build stopped: subcommand failed.
据我了解此消息中显示的问题:
/bin/sh: clang++: 找不到命令
我已经安装了llvm。但这没有用。我还读到这可能是由于缺少 g++ 引起的。但是安装了g++。
执行结果echo $PATH
:
/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/gcc49/bin
答案1
答案2
我遇到了同样的问题,并通过修改路径来解决它,如下所示:
export PATH=$PATH:/usr/bin/clang-11:/usr/bin/clang++-11
您可以将 11 更改为您正在使用的版本。这允许它在 bin 中找到该命令。在大多数情况下,使用 sudo apt-get install 时,它似乎会自动执行此操作,但并非总是如此。
答案3
我通过避免 clang 编译器解决了这个问题。我注意到其中build/gen.py
有一个选项可以让我设置编译器。默认情况下是 clang。所以build/gen.py
我改变了下面的这部分。
def WriteGNNinja(path, platform, host, options): if platform.is_msvc(): cc = os.environ.get('CC', 'cl.exe') cxx = os.environ.get('CXX', 'cl.exe') ld = os.environ.get('LD', 'link.exe') ar = os.environ.get('AR', 'lib.exe') elif platform.is_aix(): cc = os.environ.get('CC', 'gcc') cxx = os.environ.get('CXX', 'g++') ld = os.environ.get('LD', 'g++') ar = os.environ.get('AR', 'ar -X64') else: cc = os.environ.get('CC', 'clang') cxx = os.environ.get('CXX', 'clang++') ld = cxx ar = os.environ.get('AR', 'ar')
我更改了这些行:
cc = os.environ.get('CC', 'clang') cxx = os.environ.get('CXX', 'clang++') ld = cxx ar = os.environ.get('AR', 'ar')
对此:
cc = os.environ.get('CC', 'gcc') cxx = os.environ.get('CXX', 'gcc') ld = cxx ar = os.environ.get('AR', 'gcc')
现在我在执行过程中收到错误ninja -C out
,但它们与代码编译有关。的问题/bin/sh: clang++: 找不到命令解决了