[РЕШЕНО] Ошибка сборки TWRP - ТОЛЬКО на Arch Linux

yurius
то есть теперь ругается на какой-то "strncat". На что теперь ЕГО менять? ))
Как я и предупреждал, это может идти до бесконечности, исправишь одно выскочит другое.
Насколько я понял все ошибки идут при работе с длинными строками. Я не спец по функциям при работе со строками, точнее не знаю всех тонкостей, а потому остается только пробовать методом тыка, например, попробуй заменить strncat на strcat
Ошибки не исчезают с опытом - они просто умнеют
Уточнение в части возникающих ошибок - грубо говоря ошибки обусловлены ограничением длины строки при их копирования и их дальнейшем склнивании.
Привожу краткое пояснение некоторых функций, на основании которых и делал замену
strncpy – копирование строк c ограничением длины ................. заменили на memcpy – копирование непересекающихся массивов
UPD - хотя по идее может быть нужно было заменить на strcpy – копирование строк

Далее по анологии
strncat – объединение строк c ограничением длины добавляемой строки ........... меняем на strcat – объединение строк.

Так что можно еще попробовать strncpy заменить на strcpy - вообщем пробуй. А вообще не зная кухни, что там делается, это одно гадание
Ошибки не исчезают с опытом - они просто умнеют
vasek
strncat – объединение строк c ограничением длины добавляемой строки ……….. меняем на strcat – объединение строк

external/sepolicy/tools/check_seapp.c:581:5: error: too many arguments to function 'strcat'
     strcat(new_map->key, k->value, val_len);

В общем, да, судя по всему, дохлый номер. Ладно, бог с ним, не буду больше отнимать время общественности, всем спасибо, буду собирать на Дебиане (для чего же и держу 3 винта с тремя разными Линуксами).
yurius
В общем, да, судя по всему, дохлый номер.
yurius
error: too many arguments to function 'strcat'

Так оно и будет, аргументов больше - нужно править и аргументы
strncat (char *destination, const char *append, size_t n)
destination – указатель на массив в который будет добавлена строка.
append – указатель на массив из которого будет скопирована строка.
n – максимальная длина добавляемой строки.

strcat (char *destination, const char *append)
destination – указатель на массив в который будет добавлена строка.
append – указатель на массив из которого будет скопирована строка.

И да, не мучайся, давно уже писали - собери на Debian

EDIT 1
- нагуглил один документ по данному типу ошибок и их исправлению, который подтведил мою версию с обработкой строк. Там же приведено решение на какие менять функции и какие должны быть аргументы - если осилишь, можешь пробовать.
Ошибки не исчезают с опытом - они просто умнеют
vasek
И да, не мучайся, давно уже писали - собери на Debian
Да, уже собрал, просто моя рабочая система - это Арч, потому и хотел решить проблему. А так да, это уже дебри, я такое не потяну.
yurius, посмотри предыдущий пост, там привел документ по исправлению ошибок.
Ошибки не исчезают с опытом - они просто умнеют
vasek
документ по исправлению ошибок
Интересно, спс. Попробую и отпишусь в случае успеха (точнее, в случае понимания смысла вообще ))
Не точно выразился, в принципе, это не документ, а идет обсуждение аналогичной ошибки с обработкой строк в gcc 8, полученных при компиляции GDB и приводятся способы по замене функций и аргументов. Хотя в конце есть неплохое замечание, что лучше правильно использовать функцию strncpy.
Встречались при гуглении и способы правильного использования этой функции, чтобы не получать ошибки подобного типа.
Думаю, что ошибки обусловлены не точным применением функции копирования строки с ограничением в данном проекте, что и не нравится новому gcc8.
Ошибки не исчезают с опытом - они просто умнеют
vasek
новому gcc8
А если собирать другим gcc под которого писались исходники, или который на дебе.
В репах и ауре есть разные версии. При сборке переключаться на нужную.
Примеры из пакбилдов программ со сборкой другой версией gcc
  export CC=gcc-7
  export CXX=g++-7
export CC=/usr/bin/gcc-4.2
export CXX=/usr/bin/g++-4.2
export CPP=/usr/bin/cpp-4.2
export LD=/usr/bin/gcc-4.2
vasek
в конце есть неплохое замечание, что лучше правильно использовать функцию strncpy
Исправил на strcpy, сделал меньше аргументов (как Я это прочитал и понял) - посыпались другие ошибки. Не, тёмный лес для меня, ну его.
vs220
export CC=gcc-7
export CXX=g++-7

Это в bashrc надо или куда? Так вроде в исходниках есть некий gcc, я правда не знаю, то ли это что нужно. По адресу /home/yurius/папка_с_исходниками/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/ (а дальше идёт ...bin/arm-linux-androideabi-* - то есть сами бинарники уже). Это то или не то? И если то, то как и где указать к нему путь (какую директорию назначить последней - gcc, или arm-linux-androideabi-4.8 ...?).
 
Зарегистрироваться или войдите чтобы оставить сообщение.