Сборка TWRP recovery из исходников



Реп: (708)
Сборка TWRP recovery из исходников

Стол заказов recovery | Как собрать cwm » | Компиляция CWM Recovery » | Создание recovery для MTK »

Так как у многих аппараов нет TWRP рекавери я решил написать этот гайд. В первую очередь эта статья для тех у кого нет исходников и конфигов, мы это сделаем сами.
Что нам нужно:
AIDA64 и DiskInfo на смартфоне
Ubuntu 12.04 x64
Безлимитный интернет, так как будет скачено около 12 гигов исходников.
38,5 Гбайт свободного места, это только на исходники и на сборку + 10 гигов на саму систему.
Я добрался до Ubuntu 16.04.2 х64 и Android 6.0.
Исходники Omni 6.0.1 у меня весят 75 гигов + распакуются и еще на сборку итого около 200 гигов.
Сборка на Ubuntu 17.10
Если нет своих исходников, то ищите конфиг (device) похожего аппарата на том же процессоре на Github.
Вот вам для примера мой конфиг TWRP_D10A_HighScreen
И так приступим
Под спойлером полезности есть видеоинструкция по сборке TWRP
Устанавливаем Ubuntu 12.04 x64 или 16.04.2 х64 (как ищите сами, расписывать не буду)
Для Ubuntu 12.04 x64 и Android 4.4.4
Устанавливаем необходимые пакеты
sudo apt-get install bison build-essential curl flex g++-multilib gcc-multilib git-core gnupg gperf lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

Далее ставим Java Oracle 6
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer

Логинимся на github (ковычки не нужны)
git config --global user.name "ваш ник"
git config --global user.email "ваша почта"

Далее создаем папки
mkdir ~/bin
mkdir ~/omni

Устанавливаем репо
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Добавляем переменную
echo "export PATH=~/bin:$PATH" >> ~/.bashrc

И скачиваем исходники, android omni 4.4.4.
cd ~/omni
repo init -u https://github.com/omnirom/android.git -b android-4.4
repo sync

Теперь ждем пока скачается около 12 гигов исходников.
Для Ubuntu 16.04.2 x64 и Android 6.0
Устанавливаем необходимые пакеты
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip maven schedtool

Для андроид 5.0 - 6.0 нужен openjdk 7
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

Логинимся на github'е
git config --global user.name "ваш ник"
git config --global user.email "ваша почта"

Далее уже по знакомой схеме
mkdir ~/bin
PATH=~/bin:$PATH
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
echo 'export USE_CCACHE=1' >> ~/.bashrc
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Создаем папку для исходников omnirom и входим в нее.
mkdir omni
cd omni

Качаем исходники
repo init -u https://github.com/omnirom/android.git -b android-6.0
repo sync
Ну что начнем писать конфиг для нашего устройства
Спойлер на доработке
А теперь начинается самое интересное
Для начала создаем папку device для вашего устройства
cd ~/omni/device
mkdir -p vendor_name/device_name
У меня это так
mkdir -p HighScreen/D10A_HighScreen
Далее создаем *.mk файлы в конечной директории, проходим по только что созданному пути в "проводнике".
Создаем файл Android.mk с содержимым:
LOCAL_PATH := $(call my-dir)

ifeq ($(TARGET_DEVICE),device_name)
include $(call all-makefiles-under,$(LOCAL_PATH))

endif
У меня это выглядит так
LOCAL_PATH := $(call my-dir)

ifeq ($(TARGET_DEVICE),D10A_HighScreen)
include $(call all-makefiles-under,$(LOCAL_PATH))

endif
Далее создаем файл AndroidProducts.mk с содержимым:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/device_name.mk \
$(LOCAL_DIR)/omni_device_name.mk

У меня выглядет так
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/D10A_HighScreen.mk \
$(LOCAL_DIR)/omni_D10A_HighScreen.mk
Далее создаем 2 файла которые мы указали в файле AndroidProducts.mk: device_name.mk и omni_device_name.mk. У меня это как не трудно догадаться D10A_HighScreen.mk и omni_D10A_HighScreen.mk
Содержимое файла device_name.mk должно выглядеть так:
LOCAL_PATH := device/vendor_name/device_name

$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr)

ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/kernel:kernel \
$(LOCAL_PATH)/dt.img:dt.img \
$(LOCAL_PATH)/recovery.fstab:root/recovery.fstab

$(call inherit-product, build/target/product/full.mk)

PRODUCT_NAME := device_name
$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr) на omni 6.0.1 эта строка уже не нужна и от нее только ошибки сыпятся, на 4.4.4 у меня без нее не собиралось.
Внимание если в вашем ядре и рекавери нет файла dt.img, то у вас не должно быть строки:
$(LOCAL_PATH)/dt.img:dt.img \

У меня это выглядет так:
LOCAL_PATH := device/HighScreen/D10A_HighScreen

$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr)

ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/kernel:kernel \
$(LOCAL_PATH)/dt.img:dt.img \
$(LOCAL_PATH)/recovery.fstab:root/recovery.fstab

$(call inherit-product, build/target/product/full.mk)

PRODUCT_NAME := D10A_HighScreen
Содержимое файла omni_device_name.mk должно выглядеть так:]
# Inherit device configuration
$(call inherit-product, device/vendor_name/device_name/device_name.mk)

# Device identifier. This must come after all inclusions
PRODUCT_DEVICE := device_name
PRODUCT_NAME := omni_device_name
PRODUCT_BRAND := vendor_name
PRODUCT_MODEL := #модель устройства
PRODUCT_MANUFACTURER := vendor_name

Все эти значения есть в вашей стоковой прошивке system/build.prop, опирайтесь в первую очередь на них. У меня так
# Inherit device configuration
$(call inherit-product, device/HighScreen/D10A_HighScreen/D10A_HighScreen.mk)

# Device identifier. This must come after all inclusions
PRODUCT_DEVICE := D10A_HighScreen
PRODUCT_NAME := omni_D10A_HighScreen
PRODUCT_BRAND := HighScreen
PRODUCT_MODEL := Boost 2se
PRODUCT_MANUFACTURER := HighScreen
Далее, от куда взять 3 файла что мы указали в device_name.mk? Все просто, берем программу Android Image Kitchen и распаковываем сток рекавери. Будет 2 папки ramdisk и split_img.
В папке split_img берем файл recovery.img-zImage, переименовываем его в kernel. В той же папке берем файл recovery.img-dtb и переименовываем его в dt.img, если этого файла нет, разбираем ядро и ищем там только имя уже будет boot.img-dtb, если и там нет, то он не нужен. Оба файла (или один) ложим по пути device/vendor_name/device_name
Далее идем в папку ramdisk/etc берем файл recovery.fstab, ложим туда же что и предыдущие 2 файла и редактируем его что бы он выглядел примерно так, но пути должны быть ваши!
/system ext4 /dev/block/platform/msm_sdcc.1/by-name/system
/data ext4 /dev/block/platform/msm_sdcc.1/by-name/userdata
/cache ext4 /dev/block/platform/msm_sdcc.1/by-name/cache
/boot emmc /dev/block/platform/msm_sdcc.1/by-name/boot
/recovery emmc /dev/block/platform/msm_sdcc.1/by-name/recovery
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
/internal_sd vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc flags=display="Internal_sd";storage;wipeingui;removable
/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;removable

Cоздаем файл BoardConfig.mk тут самое сложное и некоторые значения придется дергать от аппарата на том же проце. Ну поехали, пишем туда:
# Platform
TARGET_BOARD_PLATFORM :=

Открываем AIDA64, пункт ЦП, первая строка. У меня так
# Platform
TARGET_BOARD_PLATFORM := msm8226

Далее
# Architecture
TARGET_ARCH := #AIDA64 вторая строка,
TARGET_ARCH_VARIANT :=
TARGET_CPU_ABI :=
TARGET_CPU_ABI2 :=
TARGET_CPU_SMP :=
TARGET_CPU_VARIANT :=

Эти значения тоже спишите, у меня это так
# Architecture
TARGET_ARCH := arm
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_SMP := true
TARGET_CPU_VARIANT := krait

Далее
# Bootloader
TARGET_NO_BOOTLOADER := true
TARGET_BOOTLOADER_BOARD_NAME :=

Первая строчка не меняется, а во второй название чипа у меня так
# Bootloader
TARGET_NO_BOOTLOADER := true
TARGET_BOOTLOADER_BOARD_NAME := MSM8226

Тут остановимся по подробнее:
# Kernel
TARGET_PREBUILT_KERNEL := #тут указываем путь к ядру device/vendor_name/device_name/kernel
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE :=
BOARD_KERNEL_PAGESIZE :=
BOARD_KERNEL_SEPARATED_DT := true
BOARD_MKBOOTIMG_ARGS :=

С первой строкой разберетесть, строка BOARD_KERNEL_CMDLINE, идем в папку разобраного рекавери и ищем файл recovery.img-cmdline и его содержимое вписываем в эту строку.
Строка BOARD_KERNEL_BASE в той же папке файл recovery.img-base его содержие вписываем в эту строку.
Строка BOARD_KERNEL_PAGESIZE там же файл recovery.img-pagesize его содержие вписываем в эту строку.
Эта BOARD_KERNEL_SEPARATED_DT := true строку не меняем.
Тут BOARD_MKBOOTIMG_ARGS сначала указываем путь к dt.img --dt device/vendor_name/device_name/dt.img Далее --kernel_offset тут пишем содержимое файла recovery.img-kerneloff
Внимание если в вашем ядре и рекавери нет файла dt.img, то у вас не должно быть строки:
BOARD_KERNEL_SEPARATED_DT := true

И в строке:
BOARD_MKBOOTIMG_ARGS := --dt device/vendorname/devicename/dt.img --kernel_offset 0x******** --ramdisk_offset 0x******** --tags_offset 0x********

Не должно быть пути к этому файлу --dt device/vendorname/devicename/dt.img, просто пишем так:
BOARD_MKBOOTIMG_ARGS := --kernel_offset 0x******** --ramdisk_offset 0x******** --tags_offset 0x********

Далее --ramdisk_offset тут содержимое файла recovery.img-ramdiskoff И наконец --tags_offset тут содержимое файла recovery.img-tagsoff, ещё нужно добавить перед каждым значением 0x(ваши символы) для наглядности смотрим ниже. У меня это выглядет так
# Kernel
TARGET_PREBUILT_KERNEL := device/HighScreen/D10A_HighScreen/kernel
BOARD_KERNEL_CMDLINE := console=null androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 lpj=192000
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 2048
BOARD_KERNEL_SEPARATED_DT := true
BOARD_MKBOOTIMG_ARGS := --dt device/HighScreen/D10A_HighScreen/dt.img --kernel_offset 0x00008000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000

Следующее что нам нужно, это размеры разделов в байтах. Скачиваем с гугл плей "эмулятор терминала" и пишем
cat /proc/partitions

Открываем DiskInfo, 3 точки, настройки, ставим галки Название раздела, Экспертный режим и Отмонтированные разделы. Ищем нужный раздел, берём число из терминала и умножаем на 1024, впысываем
# Partitions
BOARD_BOOTIMAGE_PARTITION_SIZE :=
BOARD_RECOVERYIMAGE_PARTITION_SIZE :=
BOARD_SYSTEMIMAGE_PARTITION_SIZE :=
BOARD_CACHEIMAGE_PARTITION_SIZE :=
BOARD_USERDATAIMAGE_PARTITION_SIZE :=
BOARD_FLASH_BLOCK_SIZE := 131072

Строка BOARD_FLASH_BLOCK_SIZE это стяните с похожего аппарата, но я не видел другого значения пока что.

# Recovery
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888" #Открываем AIDA64, Отображение и внизу строка GL_EXT_texture_format
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_HAS_LARGE_FILESYSTEM := true
BOARD_USE_CUSTOM_RECOVERY_FONT := \"roboto_15x24.h\"
BOARD_SUPPRESS_EMMC_WIPE := true

И последнее
# TWRP
HAVE_SELINUX := true
DEVICE_RESOLUTION := # тут пишем разрешение экрана
TW_IGNORE_MAJOR_AXIS_0 := # это смотрим как у похожего аппарата
RECOVERY_GRAPHICS_USE_LINELENGTH := # это смотрим как у похожего аппарата
BOARD_HAS_NO_REAL_SDCARD := # # это если у вас отдельный раздел для внутренней памяти, а не в разделе /data (/data/media)
TW_DEFAULT_EXTERNAL_STORAGE := # это смотрим как у похожего аппарата
TW_INTERNAL_STORAGE_PATH := # тут пишем например "/internal_sd" - эти значения у вас прописаны в recovery.fstab
TW_INTERNAL_STORAGE_MOUNT_POINT := #тогда тут "internal_sd"
TW_EXTERNAL_STORAGE_PATH := #тут пишем "/external_sd"
TW_EXTERNAL_STORAGE_MOUNT_POINT := #тогда тут"external_sd"

# USB Mounting
TARGET_USE_CUSTOM_LUN_FILE_PATH := /sys/devices/platform/msm_hsusb/gadget/lun%d/file #вот эту строку ищите сами прогой root explorer проходите по этому пути, у вас может быть по другому.

И создаём последний файл vendorsetup.sh с содержимым
add_lunch_combo omni_device_name-userdebug

У меня это так
add_lunch_combo omni_D10A_HighScreen-userdebug

Все, теперь приступим к сборке
Собираем
Хочу обратить ваше внимание, собирайте recovery по командам ниже, если вы собираете командой mka или ещё какой, то ищите ответы в другой теме, сюда можете не писать.[/b]
Тут все довольно просто
cd ~/omni
. build/envsetup.sh
lunch omni_device_name-userdebug
make -j5 recoveryimage #тут пишем число ядер вашего ЦП +1

Ну а теперь ждем, в папке omni/out/ не помню точного пути потом напишу, да и так найдете, будет свеже испеченый recovery.img.
Конфиги
Полезности
Копирование файлов прошивки в Дерево устройств - Медиатек
Использование онлайн ресурса для компиляции кастомного рекавери
fix bind mount sdcard if the data is not encrypted
fix ERROR format data
Лечение отсутствия вибрации
Описание флагов монтирования recovery.fstab
Дешифровка /data
Подготовка окружения для сборки на Arch Linux
Быстрое переключение между Python-2 и Python-3
TWRP build Generator (MTK only)
System-as-root и dtbo
Busybox на минимальных исходниках омни 9.0 Ещё про busybox.
Project Treble для TWRP
Снимаем блокировку тача на процессорах MTK.
Решение проблемы сборки TWRP 3.2.3 на исходниках Omni 7.1
Ещё один вариант сборки TWRP
Флаги для BoardConfig.mk
Ещё флаги для BoardConfig.mk
Сборка TWRP на Lineage OS 14.1
Решение проблемы синхронизации времени
Решение проблемы альбомной\портретной ориентации на планшете
Дополнение к основной инструкции, сборка TWRP 3.0.* от wladimir_tm
Сборка TWRP с минимальным набором исходниклв
Советы по сокращению размера рекавери от wladimir_tm
Установка openjdk7 на Ubuntu 17.04
Русский перевод TWRP 2.8.7.0
Полезный пост для телефонов с процем от intel
Решение для ошибки system/sepolicy/domain.te:446:ERROR 'unknown type camera' at token
Исходники


Куратор темы HuKuTaRu


Сообщение отредактировал HuKuTaRu - 22.03.24, 20:27
Причина редактирования: Редактирование



Реп: (708)


Сообщение отредактировал baddhet - 11.07.19, 14:47



Реп: (106)
baddhet @ 18.01.2015, 17:10 *
По сути нужен конфиг похожего устройства. Искать на гит хабе конечно.
Я нашёл исходники устройства с таким же процессором(msm8916) в архиве 400МБ...они подойдут чтоб подглядеть?
https://github.com/omn…ble_recovery/issues/18

Сообщение отредактировал coqs - 18.01.15, 22:12



Реп: (708)
* coqs,
На гит хабе глянь что то типо этого - https://github.com/AOKP/device_lge_mako?files=1 это на nexus 4. Найди примерно такое же.

Добавлено 18.01.2015, 22:13:

Потом для примера свой выложу. Через пару деньков.



Реп: (106)
baddhet @ 18.01.2015, 22:12 *
Найди примерно такое же.
Вроде вот этот, отличается разрешением и камерой и по моему ещё оперативкой https://github.com/MoK…d_device_huawei_c8817d я всё исходники качаю 411/415...к 2 пункту никак не могу приступить)

Сообщение отредактировал coqs - 18.01.15, 22:37



Реп: (106)
Буду признателен если подскажешь как мне лучше recovery.fstab создать
recovery.fstab
# device mount point fstype mount_flags fs_mgr_flags

/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1 wait
/dev/block/bootdevice/by-name/custpack /custpack ext4 ro,barrier=1 wait
/dev/block/bootdevice/by-name/persist /persist ext4 ro,barrier=1 wait
/dev/block/bootdevice/by-name/cache /cache ext4 noatime,nosuid,nodev,barrier=1,data=ordered wait,check
#PR-551802, add flag 'length'
/dev/block/bootdevice/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,data=ordered,noauto_da_alloc wait,check,length=-16384,encryptable=footer
/dev/block/mmcblk1p1 /storage/sdcard1 vfat nosuid,nodev,barrier=1,data=ordered,nodelalloc wait
/dev/block/bootdevice/by-name/boot /boot emmc defaults defaults
/dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults
/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults
/dev/block/bootdevice/by-name/modem /firmware vfat defaults defaults
/dev/block/bootdevice/by-name/sbl1 /sbl1 emmc defaults defaults
/dev/block/bootdevice/by-name/aboot /aboot emmc defaults defaults
/dev/block/bootdevice/by-name/rpm /rpm emmc defaults defaults
/dev/block/bootdevice/by-name/tz /tz emmc defaults defaults
/dev/block/bootdevice/by-name/hyp /hyp emmc defaults defaults
/dev/block/bootdevice/by-name/sec /sec emmc defaults defaults
/dev/block/bootdevice/by-name/splash /splash emmc defaults defaults
/dev/block/bootdevice/by-name/abootbak /abootbak emmc defaults defaults
/dev/block/bootdevice/by-name/rpmbak /rpmbak emmc defaults defaults
/dev/block/bootdevice/by-name/tzbak /tzbak emmc defaults defaults
/dev/block/bootdevice/by-name/sbl1bak /sbl1bak emmc defaults defaults
/dev/block/bootdevice/by-name/hypbak /hypbak emmc defaults defaults

В частности вот эти строки
код
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
/internal_sd vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc flags=display="Internal_sd";storage;wipeingui;removable
/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;removable


Сообщение отредактировал coqs - 19.01.15, 18:39



Реп: (708)
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
У тебя вроде только это есть. Внешней нет карты памяти?



Реп: (106)
Карта есть только она в системе как-то чудно монтируется через /dev/fuse (через этот fuse монтируется usb-otg, sdcard0, и ещё чего-то)

вот этот файлик всё монтирует как-то Прикрепленный файлinit.environ.rc.txt ( 1.32 КБ )
т.е. sdcard0 она где-то в /data ext4 /dev/block/bootdevice/by-name/userdata
а точнее по пути /data/media/0
И каким, интересно, макаром её монтировать?=)
usb-otg хрен с ним он не нужен в рекавери.

Сообщение отредактировал coqs - 19.01.15, 20:20



Реп: (708)
* coqs,
скачай прогу Storage Partition. В ней можно посмотреть точки монтирования



Реп: (106)
В принципе, можно же без внутренней карты памяти и без usb-otg собрать или это обязательно?
а эта прога в simple режиме показывает только data и system ну и если карту подключаешь то ещё sdcard1,
sdcard0 находится непосредственно в партиции dada.....media....0....

Сообщение отредактировал coqs - 19.01.15, 20:51



Реп: (106)
В итоге вот так оставляю
/system ext4 /dev/block/bootdevice/by-name/system
#/custpack ext4 /dev/block/bootdevice/by-name/custpack
/cache ext4 /dev/block/bootdevice/by-name/cache
/data ext4 /dev/block/bootdevice/by-name/userdata
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;$
/boot emmc /dev/block/bootdevice/by-name/boot
/recovery emmc /dev/block/bootdevice/by-name/recovery
#/internal_sd vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc flags=display="Internal_sd";storage;wipeingui$
#/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;rem$


Сообщение отредактировал coqs - 19.01.15, 23:12



Реп: (708)
* coqs,
пробуй просто lunch Alto45



Реп: (708)
тогда lunch и вывод сюда



Реп: (106)
Надо было дописать lunch omni_*-userdebug

WARNING: device/TCL/Alto45/omni.dependencies file not found Это критично? что ему нужно?
ОБЛОМ

О, пошло добавил отсюда файлик cortex-a53.mk https://github.com/Opt…rtex-a53/cortex-a53.mk
Теперь с утра буду тестить....а пока спать)
Ошибка
bionic/libc/include/string.h:144: error: undefined reference to 'memset'
bionic/libc/include/ln -sf /sbin/unpigz /home/user/omni/out/target/product/Alto45/recovery/root/sbin/gunzip
string.h:108: error: undefined reference to 'memcpy'
bionic/libc/bionic/malloc_debug_common.cpp:364: error: undefined reference to 'strcmp'
bionic/libc/bionic/malloc_debug_common.cpp:364: error: undefined reference to 'strcmp'
bionic/libc/include/string.h:144: error: undefined reference to 'memset'
bionic/libc/include/string.h:144: error: undefined reference to 'memset'
bionic/libc/include/string.h:144: error: undefined reference to 'memset'
bionic/libc/include/string.h:108: error: undefined reference to 'memcpy'
bionic/libc/include/string.h:108: error: undefined reference to 'memcpy'
bionic/libc/include/string.h:217: error: undefined reference to 'strlen'
bionic/libc/include/string.h:217: error: undefined reference to 'strlen'
bionic/libc/include/string.h:217: error: undefined reference to 'strlen'
bionic/libc/include/string.h:108: error: undefined reference to 'memcpy'
bionic/libc/include/string.h:217: error: undefined reference to 'strlen'
bionic/libc/include/string.h:118: error: undefined reference to 'strcpy'
bionic/libc/include/stdio.h:479: error: undefined reference to 'strcpy'
bionic/libc/include/stdio.h:479: error: undefined reference to 'strcpy'
bionic/libc/include/stdio.h:479: error: undefined reference to 'strcpy'
bionic/libc/bionic/stubs.cpp:235: error: undefined reference to 'strcmp'
bionic/libc/bionic/stubs.cpp:183: error: undefined reference to 'strcmp'
bionic/libc/include/string.h:108: error: undefined reference to '__memcpy_chk'
bionic/libc/include/string.h:108: error: undefined reference to '__memcpy_chk'
bionic/libc/include/string.h:113: error: undefined reference to 'memmove'
bionic/libc/include/string.h:113: error: undefined reference to 'memmove'
bionic/libc/include/string.h:118: error: undefined reference to '__strcpy_chk'
bionic/libc/include/string.h:113: error: undefined reference to 'memmove'
bionic/libc/include/string.h:108: error: undefined reference to '__memcpy_chk'
bionic/libc/include/string.h:113: error: undefined reference to 'memmove'
bionic/libc/include/string.h:118: error: undefined reference to '__strcpy_chk'
bionic/libc/include/string.h:118: error: undefined reference to '__strcpy_chk'
collect2: error: ld returned 1 exit status
make: *** [/home/user/omni/out/target/product/Alto45/obj/SHARED_LIBRARIES/libc_intermediates/LINKED/libc.so] Ошибка 1
make: *** Ожидание завершения заданий...
Symlink: /home/user/omni/out/target/product/Alto45/recovery/root/sbin/bbconfig -> busybox
user@user-vm:~/omni$


Сообщение отредактировал coqs - 21.01.15, 09:28



Реп: (708)
У тебя ошибка была
bionic/libc/arch-arm/arm.mk:41: *** "TARGET_CPU_VARIANT
Посмотри её. Это в boardconfig.mk прописано



Реп: (106)
baddhet @ 21.01.2015, 08:10 *
bionic/libc/arch-arm/arm.mk:41: *** "TARGET_CPU_VARIANT
Посмотри её. Это в boardconfig.mk прописано
С этой ошибкой я разобрался.



Реп: (208)
* baddhet,
Далее ставим Java Oracle 6
а что если уже стоит 7 версия? Не возникнет ошибок при компиляции?



Реп: (708)
* IvvaNGrigO,
Могут и быть. Я использую 6ую.

Добавлено 21.01.2015, 10:22:

* coqs,
Как решил?



Реп: (208)
* baddhet,
Блин установил java 6 при проверке версии выдал ошибку: мол нужна 7...
Я правильно понимаю, что это зависит от версии linux? У меня ubuntu 14.10

По поводу последнего пункта:
j16 означает,что операция будет выполняться в 4 потока,на каждое ядро.
Если у вас немногоядерный компьютер,прибавляйте к своему кол-ву ядер 1 и пишите получившийся результат.
т.е. если у меня 4 ядра, то какое оптимальное количество потоков нужно указать? 4*4=16 - верно?

По поводу выбора репозитория: если выбрать omni 5.0, то и ядро должно быть от 5 версии android? Или можно использовать ядро от 4.4.2..

Сообщение отредактировал IvvaNGrigO - 21.01.15, 11:12



Реп: (106)
coqs @ 21.01.2015, 09:24 *
О, пошло добавил отсюда файлик cortex-a53.mk https://github.com/Opt…rtex-a53/cortex-a53.mk

Создал файлик bionic/libc/arc-arm/cortex-a53/cortex-a53.mk, с таким содержанием.
libc_bionic_src_files_arm += \
arch-arm/cortex-a15/bionic/memchr.S \
arch-arm/cortex-a15/bionic/memcpy.S \
arch-arm/cortex-a15/bionic/memset.S \
arch-arm/cortex-a15/bionic/strcat.S \
arch-arm/cortex-a15/bionic/strcmp.S \
arch-arm/cortex-a15/bionic/strcpy.S \
arch-arm/cortex-a15/bionic/strlen.S \
arch-arm/cortex-a15/bionic/__strcat_chk.S \
arch-arm/cortex-a15/bionic/__strcpy_chk.S \
arch-arm/krait/bionic/memmove.S
beddhet, вот както так.

Сообщение отредактировал coqs - 21.01.15, 11:00



Реп: (708)
Нет от версии не зависит, можно сделать так:
sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javadoc
sudo update-alternatives --config javah
sudo update-alternatives --config javap
sudo update-alternatives --config jar

Каждую стоку отдельно нужно вводить. Там будет выбор какую использовать версию, выберешь 6 или она 1.6.45 будет показывать. Не помню.

Добавлено 21.01.2015, 11:14:

А ошибки у тебя вот какие
bionic/libc/include/string.h:113: error: undefined reference to 'memmove'
bionic/libc/include/string.h:118: error: undefined reference to '__strcpy_chk'


Добавлено 21.01.2015, 11:14:

Как раз на то что ты сделал. Покажи BoardConfig.mk

Куратор: HuKuTaRu

Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 00:03