首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解决对`LLVMInitializeAArch64TargetInfo‘未定义引用的未定义引用的正确方法是什么?

解决对`LLVMInitializeAArch64TargetInfo‘未定义引用的未定义引用的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-04-13 21:02:07
回答 3查看 585关注 0票数 0

在Clion中,当我构建llvm项目时,我得到了以下消息:

代码语言:javascript
复制
CMakeFiles/codegen_llvm.dir/main.cpp.o: In function `llvm::InitializeAllTargetInfos()':
/usr/lib/llvm-9/include/llvm/Config/Targets.def:26: undefined reference to `LLVMInitializeAArch64TargetInfo'
/usr/lib/llvm-9/include/llvm/Config/Targets.def:27: undefined reference to `LLVMInitializeAMDGPUTargetInfo'
/usr/lib/llvm-9/include/llvm/Config/Targets.def:28: undefined reference to `LLVMInitializeARMTargetInfo'
/usr/lib/llvm-9/include/llvm/Config/Targets.def:29: undefined reference to `LLVMInitializeBPFTargetInfo'
/usr/lib/llvm-9/include/llvm/Config/Targets.def:30: undefined reference to `LLVMInitializeHexagonTargetInfo'
/usr/lib/llvm-9/include/llvm/Config/Targets.def:31: undefined reference to `LLVMInitializeLanaiTargetInfo'

我的CmakeLists在这里:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.15)
project(codegen_llvm)
find_package(LLVM REQUIRED CONFIG)

message(STATUS "Found ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})

set(CMAKE_CXX_STANDARD 14)

add_executable(codegen_llvm main.cpp)

llvm_map_components_to_libnames(llvm_libs support core irreader executionEngine)
target_link_libraries(codegen_llvm  ${llvm_libs})
...

我该怎么办?

EN

回答 3

Stack Overflow用户

发布于 2020-04-13 21:47:40

在您的倒数第二行中,config不是一个llvm组件,所以您可能想要删除它。要查看官方组件的列表,请使用llvm-config --components命令。

票数 0
EN

Stack Overflow用户

发布于 2020-07-27 00:11:01

cmake解决方案

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.10)
project(project_name )

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_C_COMPILER clang)
set(CMAKE_CXX_COMPILER clang++)

link_libraries()
execute_process(COMMAND llvm-config --libs OUTPUT_VARIABLE LIBS)
execute_process(COMMAND llvm-config --system-libs OUTPUT_VARIABLE SYS_LIBS)
execute_process(COMMAND llvm-config --ldflags OUTPUT_VARIABLE LDF)
#message(STATUS "Found LLVM" ${LIBS})

string(STRIP ${LIBS} LIBS)
string(STRIP ${SYS_LIBS} SYS_LIBS)
string(STRIP ${LDF} LDF)

link_libraries(${LIBS} ${SYS_LIBS} ${LDF})

execute_process(COMMAND llvm-config --cxxflags OUTPUT_VARIABLE CMAKE_CXX_FLAGS)
string(STRIP ${CMAKE_CXX_FLAGS} CMAKE_CXX_FLAGS)

add_executable(project_name   toy.cpp)

代码语言:javascript
复制
clang++ -g toy.cpp $(llvm-config --cxxflags --ldflags --system-libs --libs) -O3 -o toy
票数 0
EN

Stack Overflow用户

发布于 2021-12-28 16:43:37

如果您仍然没有针对此错误的解决方案,请尝试将${LLVM_TARGETS_TO_BUILD}添加到链接库。

我也在使用CLion,我通过修改以下代码解决了这个问题:

llvm_map_components_to_libnames(llvm_libs support core irreader codegen mc mcparser option)

至:

llvm_map_components_to_libnames(llvm_libs ${LLVM_TARGETS_TO_BUILD} support core irreader codegen mc mcparser option)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61188470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档