执行CMake构建ClickHouse时找不到LLVM LLD链接器的解决咨询
构建ClickHouse时LLD链接器缺失的解决办法
问题详情
构建ClickHouse时触发CMake错误,核心提示为:
CMake Error at cmake/tools.cmake:79 (message): The only supported linker is LLVM's LLD, but we cannot find it. Call Stack (most recent call first): CMakeLists.txt:18 (include)
完整执行日志如下:
[work@xxx gluten]$ bash ./ep/build-clickhouse/src/build_clickhouse.sh /home/work/zjh/git_code/gluten /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++ CH_ORG=Kyligence CH_BRANCH=rebase_ch/20240120 CH_COMMIT=377f89518a6 -- The C compiler identification is Clang 16.0.0 -- The CXX compiler identification is Clang 16.0.0 -- The ASM compiler identification is Clang -- Found assembler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++ -- Configuring done -- Generating done -- Build files have been written to: /home/work/zjh/git_code/gluten/cpp-ch/build_ch [0/1] Generating _build_ch -- The C compiler identification is Clang 16.0.0 -- The CXX compiler identification is Clang 16.0.0 -- The ASM compiler identification is Clang -- Found assembler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++: /lib64/libtinfo.so.5: no version information available (required by /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++) -- Using compiler: clang version 16.0.0 Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin CMake Error at cmake/tools.cmake:79 (message): The only supported linker is LLVM's LLD, but we cannot find it. Call Stack (most recent call first): CMakeLists.txt:18 (include) -- Configuring incomplete, errors occurred! See also "/home/work/zjh/git_code/gluten/cpp-ch/build/CMakeFiles/CMakeOutput.log". See also "/home/work/zjh/git_code/gluten/cpp-ch/build/CMakeFiles/CMakeError.log". FAILED: _build_ch cd /home/work/zjh/git_code/gluten/cpp-ch/build_ch && bash -c "cmake -DCMAKE_C_COMPILER=/home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang -DCMAKE_CXX_COMPILER=/home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_PROTOBUF=ON -DENABLE_TESTS=OFF -DENABLE_JEMALLOC=ON -DENABLE_MULTITARGET_CODE=ON -DENABLE_EXTERN_LOCAL_ENGINE=ON -DENABLE_ODBC=OFF -DENABLE_CAPNP=OFF -DENABLE_ROCKSDB=OFF -DENABLE_GRPC=OFF -DENABLE_RUST=OFF -DENABLE_H3=OFF -DENABLE_AMQPCPP=OFF -DENABLE_CASSANDRA=OFF -DENABLE_KAFKA=OFF -DENABLE_NATS=OFF -DENABLE_LIBPQXX=OFF -DENABLE_NURAFT=OFF -DENABLE_DATASKETCHES=OFF -DENABLE_SQLITE=OFF -DENABLE_S2_GEOMETRY=OFF -DENABLE_ANNOY=OFF -DENABLE_ULID=OFF -DENABLE_MYSQL=OFF -DENABLE_BCRYPT=OFF -DENABLE_LDAP=OFF -DENABLE_MSGPACK=OFF -DUSE_REPLXX=OFF -DENABLE_CLICKHOUSE_ALL=OFF -DCOMPILER_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' -S /home/work/zjh/git_code/gluten/cpp-ch/ClickHouse -G Ninja -B /home/work/zjh/git_code/gluten/cpp-ch/build && cmake --build /home/work/zjh/git_code/gluten/cpp-ch/build --target ch" ninja: build stopped: subcommand failed.
解决步骤
- 检查LLD是否存在:终端执行
lld --version,若提示命令不存在,说明需要安装或指定路径。 - 若使用预编译LLVM包(如当前的clang 16.0.0),先确认LLD是否在clang安装目录下:
查看/home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/目录,若存在lld或ld.lld,可在CMake命令中添加参数指定链接器:
或者将该目录加入系统PATH:-DCMAKE_LINKER=/home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin/lldexport PATH=/home/work/zjh/env/clang/16.0.0/clang+llvm-16.0.0/bin:$PATH - 若预编译包不含LLD,通过系统包管理器安装:
- CentOS/RHEL:
sudo yum install lld - Ubuntu/Debian:
sudo apt install lld
- CentOS/RHEL:
- 处理日志中的libtinfo.so.5警告(可选但推荐):
CentOS/RHEL执行sudo yum install ncurses-compat-libs,Ubuntu/Debian执行sudo apt install libtinfo5,避免后续潜在问题。
内容的提问来源于stack exchange,提问作者RZR
相关产品推荐
相关产品推荐

