gpt4 book ai didi

c - 如何解决 Windows 中的 libatomic 问题?

转载 作者:行者123 更新时间:2023-11-30 16:14:49 26 4
gpt4 key购买 nike

我正在从 llvm 的源代码开发可执行文件。所以我从github下载了llvm源码。

我正在 Windows OS 上从命令行尝试一切

我正在关注 clang 中的 libtooling 链接

http://clang.llvm.org/docs/LibASTMatchersTutorial.html

我尝试了两种选择

Option First: I ran the below command
cmake -G Ninja "C:\Users\amith.ks\Desktop\Clang-llvm\llvm-project\llvm" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release

一切正常..

Second option: I wan to set cmake_c_compiler and cmake_cxx_compiler from command line.
I dont want to use cmake-gui so I run the below command
cmake -G Ninja "C:\Users\amith.ks\Desktop\Clang-llvm\llvm-project\llvm" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++

从无处抛出错误

CMake Error at cmake/modules/CheckAtomic.cmake:53 (message):
Host compiler appears to require libatomic, but cannot find it.
Call Stack (most recent call first):
cmake/config-ix.cmake:343 (include)
CMakeLists.txt:617 (include)

当我看到cmake错误日志时,它是这么说的

LINK : fatal error LNK1104: cannot open file 'atomic.lib'

clang: error: linker command failed with exit code 1104 (use -v to see invocation)

ninja: build stopped: subcommand failed.

我搜索了我的整个电脑atomic.lib没有地方可以找到。

如何在 Windows 上解决此问题?请帮我解答。

最佳答案

我知道为什么失败了。这是 LLVM 的 cmake 文件中的一个错误。为了检查是否需要 atomic.lib CheckAtomic.cmake 尝试编译一段代码并链接 atomic.lib。当它失败时(因为atomic.lib不是必需的,因此不存在),它错误地得出atomic.lib的结论需要。 LLVM 的 cmake 文件非常困惑,并且很少修复错误。有错误在那里呆了很多年。我想这是因为没有人再了解 LLVM 构建系统是如何工作的。

长话短说,我找不到为什么 CheckAtomic.cmake 插入 atomic.lib 同时检查它不是必需的。作为解决方法,我只是在 CheckAtomic.cmake 中无条件地将 HAVE_CXX_ATOMICS64_WITHOUT_LIBHAVE_CXX_ATOMICS_WITHOUT_LIB 设置为 True:

set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)

关于c - 如何解决 Windows 中的 libatomic 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57392716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com