Сборка Android из источников: неподдерживаемый reloc 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

и процесс сборки окончательно завершается неудачей:

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 является требованием, и make не запускается без него.

Что может быть не так?

5 ответов

Решение

Нужно применить этот патч, чтобы все заработало https://android-review.googlesource.com/#/c/223100/

открыто build/core/clang/HOST_x86_common.mk файл в каталоге исходного кода Android с некоторым редактором добавить эти строки, как указано в этой ссылке

Для Android Lollipop или любой более ранней версии, обязательно сохраняйте -no-integrated-as при применении этого патча. Убедитесь в правильности продолжения строки (\ в конце каждой строки, кроме последней).

Но, -no-integrated-as удаляется в Зефир.

Это работает для меня:
в файле /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: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

Проблемы возникают из-за несовместимого изменения в binutils: некоторые разделы были добавлены. У некоторых платформ сборки есть новый binutils, а у дерева Android - старый. Ошибка связана с определением переменных вызова clang. Они не говорят Clang использовать предоставленную цепочку сборки. Затем clang использует встроенную платформу сборки binutils (здесь /usr/bin/ вместо предустановок as). Затем исправление подразумевает применение исправления, указанного mysticTot, а затем удаление всех двоичных файлов, созданных цепочкой инструментов (в зависимости от места возникновения ошибки это может измениться, но удаление всех каталогов STATIC_LIBRARIES/SHARED_LIBRARIES/EXECUTABLES и т. Д. В нашем дереве должно сделать это). Также удалите кеш ccache (так как он хранит.o), затем пересоберите. Исправление, предоставляемое Ov3r1oad, состоящее в замене предварительно скомпилированного набора инструментов ld на собственный ld, не является решением, это просто обходной путь и может быть опасным (номер секции микширования не подходит). Надеюсь, это поможет.

В качестве тяжелого решения я просто заменил встроенный компоновщик на мягкую ссылку в /usr/bin/ld.gold . Это описано здесь: https://bbs.archlinux.org/viewtopic.php?id=209698.

Вы используете 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...

Другие вопросы по тегам