環境。
# uname -a
Linux FriendlyARM 3.0.8-FriendlyARM #1 PREEMPT Tue Oct 30 10:33:04 CST 2012 armv7l GNU/Linux
質問
私のChrome実行可能ファイルを実行しようとすると、次のメッセージが表示されます。
[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
しかし、Chromeではまだ見つかりません。
この問題を解決するにはどうすればよいですか?
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とハードウェア浮動小数点(「ハード浮動小数点」)をサポート -腕水素夫Debian アーキテクチャ。libattr.so.1
armeabi(ハードウェア浮動小数点を持たないARM EABI)ではなくarmhfから取得したものであることを確認してください。を使用してライブラリ(または実行可能ファイル)のABIを確認できますreadelf -A libattr.so.1 libXau.so.6.0.0
。特別な注意 -Tag_ABI_VFP_args
値が一致する必要があります。