ARM用にコンパイルされたChrome、libattr.so.1が見つかりません

ARM用にコンパイルされたChrome、libattr.so.1が見つかりません

環境。

# 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/libldconfigldconfig -v

これが問題でない場合は、互換性のない問題がある可能性がありますlibattr.so.1ABIプログラムが使用できる命令によってARMの命令が異なります(プログラムがより多くの命令を使用できるようにすることは、最新の高度なプロセッサに制限されます)。あなたのシステムは明らかに以下に基づいていますgnueabihfアルメアビGNU libcとハードウェア浮動小数点(「ハード浮動小数点」)をサポート -腕水素夫Debian アーキテクチャ。libattr.so.1armeabi(ハードウェア浮動小数点を持たないARM EABI)ではなくarmhfから取得したものであることを確認してください。を使用してライブラリ(または実行可能ファイル)のABIを確認できますreadelf -A libattr.so.1 libXau.so.6.0.0。特別な注意 -Tag_ABI_VFP_args値が一致する必要があります。

関連情報