ARM용으로 컴파일된 크롬, libattr.so.1을 찾을 수 없음

ARM용으로 컴파일된 크롬, libattr.so.1을 찾을 수 없음

환경.

# uname -a
Linux FriendlyARM 3.0.8-FriendlyARM #1 PREEMPT Tue Oct 30 10:33:04 CST 2012 armv7l GNU/Linux

질문

내 크롬 실행 파일을 실행하려고 하면 다음과 같은 메시지가 나타납니다.

[root@FriendlyARM chromium]# ./chrome
./chrome: error while loading shared libraries: libattr.so.1: cannot open shared object file: No such file or directory

공유 라이브러리 종속성을 인쇄하지만 실제로 libattr.so.1찾을 수 없습니다.

ldd ./chrome

...
libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0x469ab000)
libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0x469be000)
libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0x469c8000)
libattr.so.1 => not found      <======= NOT FOUND
libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0x469d3000)

libattr.so.1복사하여 /usr/lib심볼릭 링크를 만든 라이브러리를 찾았습니다./lib

하지만 크롬에서는 여전히 찾을 수 없습니다.

이 문제를 해결하려면 어떻게 해야 합니까?

20150120 업데이트

file libXau.so.6.0.0
debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf/libXau.so.6.0.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xcbd329ab335e695742bac844bfcb02c83e8fac78, stripped

file libattr.so.1.1.0
libattr.so.1.1.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

Ridev libattr

$ readelf -A libattr.so.1.1.0 
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1        <=====
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1    <=====
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP    <=============
  Tag_ABI_optimization_goals: Aggressive Speed

Readelf libXau

vagrant@vagrant:/vagrant_data$ readelf -A libXau.so.6.0.0 
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2      <=====
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP   <=======
  Tag_ABI_VFP_args: VFP registers
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_DIV_use: Not allowed

또는grep FP

vagrant@vagrant:/vagrant_data$ readelf -A libattr.so.1.1.0  | grep FP
  Tag_FP_arch: VFPv3
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_HardFP_use: SP and DP

vagrant@vagrant:/vagrant_data$ readelf -A libXau.so.6.0.0 | grep FP
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers    <===== CONFIRM it's ARMHF (?)

분명히 나는 libattr​​올바른 ABI를 사용하고 있지 않습니다. 더 잘 작동하는 다른 라이브러리를 찾았습니다.여기

ARMHFlibattr

vagrant@vagrant:/vagrant_data/libattr-2.4.47-armhf-1/lib$ readelf -A libattr.so.1.1.0 | grep FP
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers

답변1

표시되는 출력은 file libattr.so.1.1.0이지만 실행 파일은 libattr.so.1동일한 이름이 아닙니다. 이는 일반적 libattr.so.1으로 기호 링크여야 하며 libattr.so.1.1.0이 기호 링크를 만드는 올바른 방법은 프로그램을 실행하는 것입니다 ldconfig. 따라서 libattr.so.1.1.0필요한 위치에 있는지 확인하고 ( 패키지 관리자가 설치한 파일의 경우 /usr/local/lib좋은 아이디어임 ) 실행하여 필요한 심볼릭 링크가 생성되었는지 확인하십시오./usr/libldconfigldconfig -v

이것이 문제가 아니라면 호환되지 않는 문제가 있을 수 있습니다 libattr.so.1.ABI프로그램이 사용할 수 있는 명령어에 따라 ARM에 대한 명령어가 달라집니다(프로그램이 더 많은 명령어를 사용할 수 있도록 허용하면 최신 고급 프로세서로 제한됩니다). 귀하의 시스템은 분명히 다음을 기반으로 합니다 gnueabihf.아르메아비GNU libc 및 하드웨어 부동 소수점("하드 부동 소수점") 지원 —팔 수소 남편데비안 아키텍처. libattr.so.1armeabi(하드웨어 부동 소수점이 없는 ARM EABI)가 아닌 armhf에서 가져온 것인지도 확인하세요 . 를 사용하여 라이브러리(또는 실행 파일)의 ABI를 확인할 수 있습니다 readelf -A libattr.so.1 libXau.so.6.0.0. 특별 참고 사항 Tag_ABI_VFP_args- 값이 일치해야 합니다.

관련 정보