How to solve 'undefined reference to llvm::createLowerSwitchPass()' when compiling Obfuscator?

本文详细介绍了在使用LLVM 9.0编译Obfuscator时遇到的“undefined reference to llvm::createLowerSwitchPass()”错误的解决方案。通过修改多个CMakeLists.txt文件,增加Obfuscation和TransformUtils组件,成功解决了链接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

How to solve ‘undefined reference to llvm::createLowerSwitchPass()’ when compiling Obfuscator(llvm-9.0) ?

How to solve the problem that an error occurs in Obfuscator(llvm-9.0) compilation, as follow figure:
obfuscator compiling error
​ As error information showing, ‘undefined reference to llvm::createLowerSwitchPass()’. Cause of the problem is lack of llvm link-components configured.

​ The way to solve the problem is:

​ 1.modify ‘obfuscator/tools/lto/CMakeLists.txt’:

1 set(LLVM_LINK_COMPONENTS                         
2 +++  Obfuscation # --[FIX err]
3 +++  TransformUtils # --[FIX err]
4   AllTargetsAsmParsers
5   AllTargetsCodeGens

​ 2.modify ‘obfuscator/tools/llvm-lto/CMakeLists.txt’

1 set(LLVM_LINK_COMPONENTS                         
2 +++  Obfuscation # --[FIX err]
3 +++  TransformUtils # --[FIX err]
4   AllTargetsAsmParsers
5   AllTargetsCodeGens

​ 3.modify ‘obfuscator/tools/llvm-lto2/CMakeLists.txt’

1 set(LLVM_LINK_COMPONENTS                         
2 +++  Obfuscation # --[FIX err]
3 +++  TransformUtils # --[FIX err]
4   AllTargetsAsmParsers
5   AllTargetsCodeGens

​ 4.modify ‘obfuscator/unittests/IR/CMakeLists.txt’

1 set(LLVM_LINK_COMPONENTS                                           
2 +++  Obfuscation # --[FIX err]
3 +++  TransformUtils # --[FIX err]
4   Analysis
5   AsmParser

​ 5.modify ‘obfuscator/unittests/Passes/CMakeLists.txt’

10 set(LLVM_LINK_COMPONENTS                                           
11 +++     Obfuscation # --[FIX err]
12 +++     TransformUtils # --[FIX err]
13         Support                                                   
14         Passes                                                     
15         Core)

​ 6.Finally, create obfuscator cmake project, and make.

Note:

The way above is too complex. I think that there is a better way to solve this problem, maybe modifying other cmake-config to compile the function definition(llvm::createLowerSwitchPass) into other archive, or others. At the moment, I have not idea.

If your way is better than mine, please tell me. Thanks.

mailbox:18428388868@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值