首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用llvm目标初始化函数

如何使用llvm目标初始化函数
EN

Stack Overflow用户
提问于 2022-04-14 06:19:12
回答 1查看 117关注 0票数 0

我的主机系统

默认目标:x86_64-未知-linux-gnu

主机CPU: skylake

使用LLVM_TARGETS_TO_BUILD=all选项构建的LLVM/Clang。

如何在我的代码中使用另一个目标的初始化函数?

我修改了klee (符号执行工具)来运行跨平台目标的IR。

代码语言:javascript
运行
复制
#include "llvm/Support/TargetSelect.h"

int main () {
    ...
    // llvm::InitializeAllTargets(); -> Error    
    llvm::InitializeNativeTargets(); -> Success
    ...
}

在这种情况下,错误

代码语言:javascript
运行
复制
${LLVM}/build/include/llvm/Config/Targets.def:28: undefined reference to `LLVMInitializeARMTargetInfo'
${LLVM}/build/include/llvm/Config/Targets.def:29: undefined reference to `LLVMInitializeBPFTargetInfo'
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 14:21:50

LLVMInitializexxxTargetInfo()函数由InitializeAllTargets(),使用,错误消息意味着您没有链接所需的LLVM库。

InitializeNativeTargets()成功了,因为您可能没有在-DLLVM_TARGETS_TO_BUILD中包含您的本地arch。

您可以在CMakeLists.txt中添加以下行来链接LLVM目标库:

代码语言:javascript
运行
复制
set(LLVM_LINK_COMPONENTS 
  ${LLVM_TARGETS_TO_BUILD}
  )


# Build your .cpp with llvm macro to use LLVM_LINK_COMPONENTS
add_llvm_xxx_macro(YourOutputFile
  ...
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71867265

复制
相关文章

相似问题

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