HarmonyOS 鸿蒙Next DevEco Studio编译C++项目在链接时llvm程序出错
HarmonyOS 鸿蒙Next DevEco Studio编译C++项目在链接时llvm程序出错
LLVM ERROR: failed to perform `tail` call elimination on a call site marked musttail
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: /Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/llvm/bin/ld.lld --sysroot=/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/sysroot -z noexecstack -EL --fix-cortex-a53-843419 --warn-shared-textrel -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -shared -o /Users/laoganbu/qiniu/project/qplayer2-core/platform/harmony/qplayer2_core/build/default/intermediates/cmake/default/obj/arm64-v8a/libqplayer2-core.so /Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o /Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -L/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/llvm/bin/../lib/aarch64-linux-ohos/c++/ -L/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/sysroot/usr/lib/ -L/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/llvm/bin/../lib/aarch64-linux-ohos/ -L/Users/laoganbu/Library/Huawei/Sdk/openharmony/9/native/sysroot/usr/lib/aarch64-linux-ohos/ -plugin-opt=mcpu=generic -plugin-opt=O3 -plugin-opt=-function-sections -plugin-opt=-data-sections --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections -soname libqplayer2-core.so
......
......
......
1. Running pass 'Function Pass Manager' on module 'ld-temp.o'.
2. Running pass 'AArch64 Instruction Selection' on function '@_ZThn72_N6QMedia28SwitchQualityPendingMaterial9on_notifyERKNSt4__n112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_7URLTypeEiii11AVMediaTypeNS_10NotifyTypeEiz'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 lld 0x000000010292dca8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1 lld 0x000000010292cb80 llvm::sys::RunSignalHandlers() + 112
2 lld 0x000000010292e5cc llvm::sys::PrintStackTraceOnErrorSignal(llvm::StringRef, bool) + 1372
3 libsystem_platform.dylib 0x000000018b74da24 _sigtramp + 56
4 libsystem_pthread.dylib 0x000000018b71dcc0 pthread_kill + 288
5 libsystem_c.dylib 0x000000018b629a40 abort + 180
6 lld 0x000000010287e77c llvm::report_fatal_error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool) + 0
7 lld 0x000000010287e5bc llvm::report_fatal_error(llvm::Twine const&, bool) + 0
8 lld 0x0000000102d51a04 llvm::AArch64TargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const + 9752
9 lld 0x00000001035137c4 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const + 5108
10 lld 0x00000001035289c8 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) + 248
11 lld 0x000000010351a320 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, llvm::BasicBlock const*) + 2152
12 lld 0x0000000103507f20 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) + 1128
13 lld 0x00000001034fd688 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) + 132
14 lld 0x00000001035757a4 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) + 284
15 lld 0x0000000103575124 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 5104
16 lld 0x0000000103573154 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1788
17 lld 0x0000000103739558 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 304
18 lld 0x00000001045c26e8 llvm::FPPassManager::runOnFunction(llvm::Function&) + 712
19 lld 0x00000001045c953c llvm::FPPassManager::runOnModule(llvm::Module&) + 60
20 lld 0x00000001045c30a4 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 2008
21 lld 0x000000010360136c llvm::lto::backend(llvm::lto::Config const&, std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream>>(unsigned int)>, unsigned int, std::__1::unique_ptr<llvm::Module, std::__1::default_delete<llvm::Module>>, llvm::ModuleSummaryIndex&) + 2928
22 lld 0x0000000103600968 llvm::lto::backend(llvm::lto::Config const&, std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream>>(unsigned int)>, unsigned int, std::__1::unique_ptr<llvm::Module, std::__1::default_delete<llvm::Module>>, llvm::ModuleSummaryIndex&) + 364
23 lld 0x00000001035f6afc llvm::lto::LTO::runRegularLTO(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream>>(unsigned int)>) + 1340
24 lld 0x00000001035f62a0 llvm::lto::LTO::run(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream>>(unsigned int)>, std::__1::function<std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream>>(unsigned int)>(unsigned int, llvm::StringRef)>) + 960
25 lld 0x0000000102a5e6a4 lld::elf::BitcodeCompiler::compile() + 852
26 lld 0x0000000102a0e9c4 lld::elf::LinkerDriver::inferMachineType() + 71168
27 lld 0x00000001029ffa04 lld::elf::LinkerDriver::inferMachineType() + 9792
28 lld 0x00000001029f5d38 lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) + 5624
29 lld 0x00000001029f3ec4 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&, llvm::raw_ostream&) + 448
30 lld 0x00000001028271d0 main + 2144
31 lld 0x0000000102826a70 main + 256
32 dyld 0x000000018b39d0e0 start + 2360
clang++: error: unable to execute command: Abort trap: 6
clang++: error: linker command failed due to signal (use -v to see invocation)
更多关于HarmonyOS 鸿蒙Next DevEco Studio编译C++项目在链接时llvm程序出错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
更换下ide版本呢
更多关于HarmonyOS 鸿蒙Next DevEco Studio编译C++项目在链接时llvm程序出错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用DevEco Studio编译C++项目时,若在链接阶段出现LLVM程序出错,可能是由于LLVM工具链在链接过程中遇到了未定义的符号或库依赖问题。常见原因包括:
- 未定义的符号:链接器找不到某些函数或变量的定义,可能是源文件未正确包含或库未正确链接。
- 库依赖问题:项目依赖的静态库或动态库未正确配置,或库文件路径未正确设置。
- 编译器或链接器配置错误:项目的编译或链接选项配置不当,如未指定正确的库路径或未启用必要的编译选项。
解决此类问题,可检查项目配置文件,确保所有依赖库和源文件正确包含,并验证编译和链接选项的正确性。