You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译LLVM 14时pthread相关未定义引用错误的解决方法

解决LLVM 14编译时gtest缺失pthread依赖的链接错误

你的推测完全正确——gtest依赖POSIX线程库(pthread),当前CMake配置未自动链接该库,导致出现undefined reference to pthread_getspecific的链接错误。针对Ubuntu 18.04环境,可通过以下几种方式解决:

方法一:修改CMake命令添加全局链接参数

直接在原CMake命令中加入强制链接pthread的配置,修改后的完整命令如下:

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/home/me/data/programs/llvm14/llvm-install-release -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;libunwind;lldb;lld;compiler-rt;polly;" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_SPLIT_DWARF=ON -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_RTTI=ON -DBUILD_SHARED_LIBS=ON  -DLLVM_ENABLE_ABI_BREAKING_CHECKS=OFF -DCMAKE_EXE_LINKER_FLAGS="-lpthread" -DCMAKE_SHARED_LINKER_FLAGS="-lpthread" ../llvm

新增的两个参数会让所有可执行文件和共享库都链接pthread库,覆盖gtest的依赖需求。

方法二:修改已生成的CMake缓存(无需重新执行CMake)

如果已经执行过CMake生成了编译目录,可直接修改缓存文件:

  • 进入LLVM编译目录,找到CMakeCache.txt文件
  • 搜索CMAKE_EXE_LINKER_FLAGS和CMAKE_SHARED_LINKER_FLAGS条目,在现有值末尾追加 -lpthread
  • 保存文件后重新执行make命令即可

方法三:仅针对LLVM测试组件配置链接参数

因为错误来自LLVM的测试模块(gtest用于单元测试),也可以只给测试程序添加链接参数:
在原CMake命令中加入-DLLVM_TEST_LINKER_FLAGS="-lpthread",这样仅测试相关的二进制文件会链接pthread库,更精准。

完成上述修改后,重新执行CMake(方法一或三)或直接make(方法二),即可解决该链接错误。

内容的提问来源于stack exchange,提问作者user1388672

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:47:21