web-dev-qa-db-ja.com

Androidソースから:サポートされていない再配置43

Android 5.1.1をコンパイルすると、次のようなエラーが多数発生します。

...
...
...
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43

そしてmakeプロセスは最終的に失敗します:

clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/Host_shared_library_internal.mk:44: recipe for target 'out/Host/linux-x86/obj32/lib/libnativehelper.so' failed
make: *** [out/Host/linux-x86/obj32/lib/libnativehelper.so] Error 1

私は、clangを使用して、または使用せずに、異なるバージョンのclangを使用してソースを構築しようとしました。しかし、より新しいブランチでは、clangは必須であり、makeはそれなしでは起動しません。

何が悪いのでしょうか?

27

このパッチを適用して、動作するようにする必要があります https://Android-review.googlesource.com/#/c/223100/

開いた build/core/clang/Host_x86_common.mkファイルをAndroidソースコードディレクトリにエディターを追加して、これらの行を追加します。これについては link

Android Lollipopまたはそれ以前のバージョンでは、-no-integrated-asこのパッチの適用中。行の継続が適切であることを確認してください(\(最後の行を除く各行の最後)。

しかし、-no-integrated-asはマシュマロで削除されます。

24
mystictot

私にはうまくいきます:
ファイル/art/build/Android.common_build.mkで、以下を見つけます。

# Host.
ART_Host_CLANG := false
ifneq ($(WITHOUT_Host_CLANG),true)
  # By default, Host builds use clang for better warnings.
  ART_Host_CLANG := true
endif

への変更 :

# Host.
ART_Host_CLANG := false
ifeq ($(WITHOUT_Host_CLANG),false)
  # By default, Host builds use clang for better warnings.
  ART_Host_CLANG := true
endif

それでも動作しない場合は、Android root path:cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/Host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

24
Gracker

問題はbinutilsの互換性のない変更に起因します。いくつかのセクションが追加されました。一部のビルドプラットフォームには新しいbinutilsがあり、Androidビルドツリーには古いものがあります。バグはclang呼び出し変数定義に由来します。これらはclangに提供されたビルドチェーンネイティブビルドプラットフォームbinutils(ここでは/ usr/bin/asとして提供されているプリビルド)次に、修正はmysticTotが指すパッチを適用し、ツールチェーンによって生成されたすべてのバイナリを削除することを意味します(エラーが表示される場所により、すべてのSTATIC_LIBRARIES/SHARED_LIBRARIES/EXECUTABLESなど、アウトツリー内のディレクトリで行う必要があります。また、ccacheキャッシュを削除して(.oを保存するため)、再構築します。 、単なる回避策であり、危険な場合があります(セクション番号の混合は良くありません)。

4

ハードな回避策として、/ usr/bin/ld.goldのビルド済みリンカーをソフトリンクに置き換えました。ここで説明しました: https://bbs.archlinux.org/viewtopic.php?id=209698 .

3
Ov3r1oad

Arch Linuxでビルドしていますか?私は今日から同じ問題を抱えています。私の以前のビルドは3日前で、すべて問題ありませんでした。今日はすべて失敗します。

管理者が2日前にいくつかのパッケージ、特にこれらをアップグレードしたのを見ます

[2016-03-16 15:29] [ALPM] upgraded glibc (2.22-3 -> 2.23-1)
[2016-03-16 15:29] [ALPM] upgraded lib32-glibc (2.22-3.1 -> 2.23-1)
[2016-03-16 15:29] [ALPM] upgraded lib32-gcc-libs (5.3.0-3 -> 5.3.0-5)
[2016-03-16 15:29] [ALPM] upgraded gcc-libs-multilib (5.3.0-3 -> 5.3.0-5)
[2016-03-16 15:29] [ALPM] upgraded libcap (2.24-2 -> 2.25-1)
[2016-03-16 15:29] [ALPM] upgraded binutils (2.25.1-3 -> 2.26-3)
[2016-03-16 15:29] [ALPM] upgraded gcc-multilib (5.3.0-3 -> 5.3.0-5)
[2016-03-16 15:29] [ALPM] upgraded libcups (2.1.2-3 -> 2.1.3-1)

binutilsが犯人になる可能性がありますか? ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808206

https://groups.google.com/d/msg/Android-x86/U1XpL0tUpqw/y4W3wRCdJgAJ も参照してください。

2