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