/bin/sh: clang++: 找不到命令

/bin/sh: clang++: 找不到命令

我使用 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

尽管Lenny 包存档现在对我不起作用,该文件/usr/bin/clang++由...提供Debian 8 Jessie 上的软件包。这LLVM包不依赖于封装如此可能无法安装。尝试使用 来安装它 sudo apt install clang。如果这不起作用,您可以运行echo $PATH并发布结果吗?

答案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++: 找不到命令解决了

相关内容