文档介绍:jdk无法在树莓派4b上运行
—个之前在海思平台运行正常的jdk版本,在32位树莓派的系统上面总是没法正常运行。运行java时报错
java:errorwhileloadingsharedlibraries::cannTag_THUMB_ISA_use:Thumb-1
Tag_FP_arch:VFPv2
Tag_ABI_PCS_wchar_t:4
Tag_ABI_FP_denormal:Needed
Tag_ABI_FP_exceptions:Needed
Tag_ABI_FP_number_model:IEEE754
Tag_ABI_align_needed:8-byte
Tag_ABI_enum_size:int
Tag_ABI_HardFP_use:Deprecated
Tag_ABI_optimization_goals:AggressiveSpeed
而可以运行的那个版本
-bash-#readelf-
AttributeSection:aeabi
FileAttributes
Tag_CPU_name:"6"
Tag_CPU_arch:v6
Tag_ARM_ISA_use:Yes
Tag_THUMB_ISA_use:Thumb-1
Tag_FP_arch:VFPv2
Tag_ABI_PCS_wchar_t:4
Tag_ABI_FP_denormal:Needed
Tag_ABI_FP_exceptions:Needed
Tag_ABI_FP_number_model:IEEE754
Tag_ABI_align_needed:8-byte
Tag_ABI_align_preserved:8-byte,exceptleafSP
Tag_ABI_enum_size:int
Tag_ABI_HardFP_use:Deprecated
Tag_ABI_VFP_args:VFPregisters
Tag_ABI_optimization_goals:AggressiveSpeed
Tag_CPU_unaligned_access:v6
Tag_DIV_use:Notallowed
1绷老老老潇巒竄
开始以为是Tag_CPU_name:"ARM10TDMI"这个导致了程序在树莓派上面不能正常执行。于是想办法编译一个相同Tag_CPU_name的执行程序来试验一下oaptsearch了—下,发现ubuntu自带的arm-linuxgcc版本真多啊,从gcc5到gcc8,有multilib和非multilib版本之分,还有gnueabi和gnueabihf版本之分。先挑了一个低版本的
aptinstallgcc-5-arm-linux-gnueabi
结果发现,无论我怎么指定-mcpu,编译出来的Tag_CPU_name总是没变化。反而是指定-march=armv6或者armv7-a,Tag_CPU_name、Tag_CPU_arch都一起变了。后面又试了一下,用树莓派上面自己带的gcc,编译出来的aeabi信息为
-bash-#readelf-
AttributeSection:ae