You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM平台调用libgandiva_jni.so抛出异常(x86平台运行正常)

ARM平台下libgandiva_jni.so调用异常问题排查

Arrow 9.0.0版本异常情况

  • 现象:相同Java程序调用Arrow库的libgandiva_jni.so时,x86平台运行正常,ARM平台编译成功但调用时抛出未定义符号异常
  • 异常信息:

undefined symbol: _ZN4llvm3sys14DynamicLibrary19getPermanentLibraryEPKcPSs

  • 定位到的问题方法:
llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::basic_string<char, std::char_traits, std::allocator >)
  • 确认情况:该方法位于libLLVMSupport.a静态库中,且已将该库链接到共享库,链接命令如下:
/usr/bin/c++ -fPIC  -Wno-noexcept-type  -fdiagnostics-color=always -O3 -DNDEBUG 
-Wall -fno-semantic-interposition -march=armv8-a  -O3 -DNDEBUG 
-Wl,--version-script=/path/to/arrow-9.0.0/cpp/src/gandiva/jni/symbols.map 
-shared -Wl,-soname,libgandiva_jni.so.900 -o 
../../../release/libgandiva_jni.so.900.0.0 
CMakeFiles/gandiva_jni_objlib.dir/config_builder.cc.o 
CMakeFiles/gandiva_jni_objlib.dir/config_holder.cc.o 
CMakeFiles/gandiva_jni_objlib.dir/expression_registry_helper.cc.o 
CMakeFiles/gandiva_jni_objlib.dir/jni_common.cc.o 
CMakeFiles/gandiva_jni_objlib.dir/Types.pb.cc.o 
../../../protobuf_ep-install/lib/libprotobuf.a ../../../release/libgandiva.a 
../../../release/libarrow.a ../../../protobuf_ep-install/lib/libprotobuf.a 
../../../brotli_ep/src/brotli_ep-install/lib/libbrotlienc-static.a 
../../../brotli_ep/src/brotli_ep-install/lib/libbrotlidec-static.a 
../../../brotli_ep/src/brotli_ep-install/lib/libbrotlicommon-static.a 
../../../bzip2_ep-install/lib/libbz2.a 
../../../lz4_ep-prefix/src/lz4_ep/lib/liblz4.a 
../../../snappy_ep/src/snappy_ep-install/lib/libsnappy.a 
../../../zstd_ep-install/lib64/libzstd.a ../../../orc_ep-install/lib/liborc.a 
../../../jemalloc_ep-prefix/src/jemalloc_ep/dist//lib/libjemalloc_pic.a 
-pthread /usr/local/llvm/lib/libLLVMMCJIT.a 
/usr/local/llvm/lib/libLLVMExecutionEngine.a 
/usr/local/llvm/lib/libLLVMOrcTargetProcess.a 
/usr/local/llvm/lib/libLLVMOrcShared.a /usr/local/llvm/lib/libLLVMRuntimeDyld.a 
/usr/local/llvm/lib/libLLVMipo.a /usr/local/llvm/lib/libLLVMFrontendOpenMP.a 
/usr/local/llvm/lib/libLLVMIRReader.a /usr/local/llvm/lib/libLLVMAsmParser.a 
/usr/local/llvm/lib/libLLVMVectorize.a 
/usr/local/llvm/lib/libLLVMInstrumentation.a 
/usr/local/llvm/lib/libLLVMLinker.a /usr/local/llvm/lib/libLLVMAArch64CodeGen.a 
/usr/local/llvm/lib/libLLVMAsmPrinter.a 
/usr/local/llvm/lib/libLLVMDebugInfoMSF.a 
/usr/local/llvm/lib/libLLVMGlobalISel.a 
/usr/local/llvm/lib/libLLVMSelectionDAG.a /usr/local/llvm/lib/libLLVMCodeGen.a 
/usr/local/llvm/lib/libLLVMTarget.a /usr/local/llvm/lib/libLLVMBitWriter.a 
/usr/local/llvm/lib/libLLVMScalarOpts.a 
/usr/local/llvm/lib/libLLVMAggressiveInstCombine.a 
/usr/local/llvm/lib/libLLVMInstCombine.a 
/usr/local/llvm/lib/libLLVMTransformUtils.a 
/usr/local/llvm/lib/libLLVMAnalysis.a /usr/local/llvm/lib/libLLVMProfileData.a 
/usr/local/llvm/lib/libLLVMDebugInfoDWARF.a /usr/local/llvm/lib/libLLVMObject.a 
/usr/local/llvm/lib/libLLVMBitReader.a /usr/local/llvm/lib/libLLVMTextAPI.a 
/usr/local/llvm/lib/libLLVMCFGuard.a /usr/local/llvm/lib/libLLVMCore.a 
/usr/local/llvm/lib/libLLVMRemarks.a 
/usr/local/llvm/lib/libLLVMBitstreamReader.a 
/usr/local/llvm/lib/libLLVMAArch64AsmParser.a 
/usr/local/llvm/lib/libLLVMMCParser.a 
/usr/local/llvm/lib/libLLVMAArch64Disassembler.a 
/usr/local/llvm/lib/libLLVMAArch64Desc.a 
/usr/local/llvm/lib/libLLVMMCDisassembler.a 
/usr/local/llvm/lib/libLLVMAArch64Info.a /usr/local/llvm/lib/libLLVMMC.a 
/usr/local/llvm/lib/libLLVMBinaryFormat.a 
/usr/local/llvm/lib/libLLVMDebugInfoCodeView.a 
/usr/local/llvm/lib/libLLVMAArch64Utils.a /usr/local/llvm/lib/libLLVMSupport.a 
/usr/lib64/libz.so -lrt -ldl -lpthread -lm /usr/lib64/libtinfo.so 
/usr/local/llvm/lib/libLLVMDemangle.a /usr/lib64/libssl.so 
/usr/lib64/libcrypto.so ../../../re2_ep-install/lib/libre2.a 
../../../utf8proc_ep-install/lib/libutf8proc.a

Arrow 16.1版本异常情况

  • 现象:使用官方预编译的libgandiva_jni.so,ARM平台调用时抛出LLJIT实例创建失败异常
  • 异常信息:

GandivaException: Failed to make LLVM module due to Could not create LLJIT instance: Symbols not found: [ llvm_orc_registerEHFrameSectionWrapper ]

环境信息

  • 操作系统:CentOS v7.6
  • 工具:GCC 8.3.1,LLVM 14
  • ARM平台编译Arrow 9的CMake命令:
cmake .. -DARROW_GANDIVA_JAVA=ON -DARROW_GANDIVA=ON  -DARROW_WITH_RE2=ON -DARROW_WITH_UTF8PROC=ON

内容的提问来源于stack exchange,提问作者Nai yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:57:31