Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

8. Если не ошибаюсь - не собирать пакет (ipk) - например если используется статическая, а не динамическая библиотека при сборке зависимого пакета. Или просто нужны хедеры.

Опубликовано

@zyxmon благодарю Вас за ответы.

  Цитата

4. Почему в варианте "статики" указана переменная PKG_FIXUP:=autoreconf, а в варианте "динамики" ее нет?

Показать  
  Цитата

4. На мой взгляд тут нет никакой связи.
Показать  

Тогда поясните пожалуйста, какой смысл использования этой переменной именно в первом варианте?

 

  Цитата

6. Как понять, какие mk-файлы необходимо включать в файл манифеста и в каких случаях? Речь идет о конструкциях include $(INCLUDE_DIR)/*.mk.
Показать  
  Цитата

6. По аналогии с другими Makefile - главное что используется для сборки make, cmake или экзотика
Показать  

Где можно найти описание целей использования данных файлов при сборке пакетов?

 

  Цитата

2. Как работают секции типа define Build/* при сборке нескольких приложений сразу (как в нашем случае)? Эти секции будут исполняться для всех приложений, которые прописаны в секциях define Package/*? В документации ответа на этот вопрос не нашел. Прошу пояснить данный вопрос.
Показать  
  В 20.01.2023 в 06:22, zyxmon сказал:

2. Вы указываете как собрать пакет, бинарники (приложения) дело десятое.

Показать  

По одному пакету понятно, не ясен момент если собираются несколько пакетов?

Опубликовано

При сборке под mips возникла проблема следующая (под остальные две платформы - собралось без ошибок):

 checking whether <wchar.h> uses 'inline' correctly... no
 configure: error: <wchar.h> cannot be used with this compiler (mips-openwrt-linux-gnu-gcc -EB -O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float  -I/apps/entware/staging_dir/toolchain-mips_mips32r2_gcc-8.4.0_glibc-2.27/include ).
 This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
 C99 mode. You have four options:
   - Add the flag -fgnu89-inline to CC and reconfigure, or
   - Fix your include files, using parts of
     <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
   - Use a gcc version older than 4.3, or
   - Don't use the flags -std=c99 or -std=gnu99.
 Configuration aborted.

Прошу подсказать, какой блок if необходимо включить в файл манифеста для mips и какой из 4 предложенных вариантов выбрать для решения данного вопроса. Если подставить флаг -fgnu89-inline, под остальные платформы пакет соберется?

Опубликовано
  В 20.01.2023 в 07:18, Zeleza сказал:

По одному пакету понятно, не ясен момент если собираются несколько пакетов?

Показать  

Без разницы. Это идеология Openwrt делить одну сборку на маленькие ipk. Экономят место на флешке.

 

  В 20.01.2023 в 07:18, Zeleza сказал:

 PKG_FIXUP:=autoreconf

Показать  

Пакет можно собирать по разному в зависимости от того, как задумал разработчик. Инструкция означает, что сначала выполняется https://www.geeksforgeeks.org/autoreconf-command-in-linux-with-examples/

Опубликовано

0. Намерено приведено неск. вариантов, чтоб показать разные способы.

1. Всё от Вас зависит. Выкинуть из проекта сборку libhttpserver (отдельно собирать статикой, см. BUILDONLY (gerbera+libebml+libmatroska+...)), изменить флаги сборки.

2. Выполняется последовательно, шаг за шагом. Как распишите, так и будет собираться.

3. Уже ответили. Для защиты файлов от перезаписи/удаления (если вносились изменения) при обновлении/удалении пакета (`opkg --force-overwrite` перезапишет).

4. Автогенерация. Используется, если отсутствует файл "configure" (чтоб сгенерировать) или патчатся configure.{ac,in} (чтоб переконфигурировать). Или расписываете ручками (2-4 Makefile`ы).

5. Уже ответили. А CMAKE_INSTALL служит для другого - аналог Build/InstallDev.

6. Уже ответили. По аналогии. Второй пост в теме: определить язык/систему сборки (см. пакеты:  perl-*, php8-pecl-*, python*, samba4(waf), serf(scons), gensio(swig), mariadb(cmake), mpd(meson), torrserver(go), ...)

7. Т.к. производятся доп. действия (распаковка внешней зависимости и генерация файлов). Если перенесёте их в др. секцию, этап Build/Prepare можно выкинуть (будут выполнены действия по умолчанию).

8. Уже ответили. Собрать что-то, но без создания пакета.

9. Cм., во что разворачивается URL запроса (удалите dl/libhttpserver*, удалите знак "?" и попробуйте собрать пакет).

Втыкание по ссылкам и насилование Makefile`ов категорически приветствуется )))

Опубликовано (изменено)

Отвечу сам себе, возможно пригодится кому-либо.

  В 20.01.2023 в 07:27, Zeleza сказал:

Прошу подсказать, какой блок if необходимо включить в файл манифеста для mips и какой из 4 предложенных вариантов выбрать для решения данного вопроса. Если подставить флаг -fgnu89-inline, под остальные платформы пакет соберется?

Показать  

Под mips флаг  -fgnu89-inline решил проблему. Добавление следующего кода помогло:

ifeq ($(findstring mips,$(ARCH)),)
	TARGET_CFLAGS += -fgnu89-inline
endif

 

Изменено пользователем Zeleza
Опубликовано (изменено)

Статика )))

1. libhttpserver

  Показать контент

2. my-super-prog (заменить на)

  Показать контент

 

  Показать контент

 

Изменено пользователем TheBB
add to log
Опубликовано (изменено)

Что-то у меня такого нет...

  В 20.01.2023 в 12:06, Zeleza сказал:

Добавление следующего кода помогло:

Показать  

или

TARGET_CFLAGS += $(if $(CONFIG_mips),-fgnu89-inline)
Изменено пользователем TheBB
Опубликовано
  В 20.01.2023 в 12:28, TheBB сказал:
Build/Configure:=:
Показать  

^ да, сразу, чтоб закрыть вопрос, отключение (сброс) конфигурирования (косметика, сравнить вывод c/без). )))

Опубликовано
  В 20.01.2023 в 12:28, TheBB сказал:

Статика )))

Показать  

Получается, что для установки статики необходимо сначала собрать пакет libhttpserver, затем установить его на устройство и только затем собрать и установить my-super-prog? Все верно?

Опубликовано
  В 20.01.2023 в 15:16, Zeleza сказал:

установить

Показать  

???

Создаете каталог libhttpserver и закидываете в него Makefile (libhttpserver) из comment=158866, свой Makefile правите, ориентируясь на Makefile (my-super-prog) из comment=158866. Собираете пакет, Дальше, если хотите, ставите на устройстро для проверки (см. лог из comment=158866).

 

 

Опубликовано

Т.е. получим на выходе один ipk со всем содержимым или два ipk?

Опубликовано (изменено)

Доброго утра,

  В 20.01.2023 в 17:18, TheBB сказал:

Я пример с gerbera (см. 1 из comment=158862) не зря привёл (https://github.com/Entware/entware-oldpackages-ports/blob/master/gerbera/Makefile#L22)

Показать  

В приведенном Вами примере все используемые библиотеки присутствуют в стандартном репозитории, в моем же примере - библиотеки в стандартном репозитории нет, потому ответ Ваш мне не ясен. Если мы собираем по "статике" два пакета и один из них библиотека, то получим на выходе два ipk и тогда пользователю необходимо будет заботится о том, чтобы сначала скачать один пакет и затем второй, я же хочу этого избежать и сделать (как варианте с динамикой) автоматическую сборку библиотеки и затем сборку пакета в одном флаконе. Можно ли такого достичь в варианте со "статикой"? 

-------------

Так же, по возможности, прошу помочь в вопросе повторной компиляции при исправлении ошибок в коде.
Делал make clean, make package./my-super-prog/clean, обновлял feeds, но все едино - возникают ошибки при компиляции, причем при компиляции сопутствующих пакетов, а не целевого. Потому каждый раз приходится собирать все заново после make dirclean. Тогда ошибки появляются только при компиляции целевой программы, если они есть или пакет собирается на ура, но каждый раз ждать по 30-40 минут сборку всего тулчайна дело утомительное, когда меняешь в коде всего несколько строк.
Потому прошу помочь развернутым ответом или ссылкой на источник развернутого ответа по данном вопросу - как ускорить процесс переборки пакета при внесении исправлений в код? 

Изменено пользователем Zeleza
Опубликовано
  В 21.01.2023 в 09:03, Zeleza сказал:

то получим на выходе получается два ipk и тогда пользователю необходимо будет заботится о том, чтобы сначала скачать один пакет и затем второй

Показать  

И это правильно.

  В 21.01.2023 в 09:03, Zeleza сказал:

Можно ли такого достичь в варианте со "статикой"? 

Показать  

А что Вы называете "статикой" - если статическую линковку - то нужен один пакет с бинарником.

  В 21.01.2023 в 09:03, Zeleza сказал:

Делал make clean, make package./my-super-prog/clean, обновлял feeds

Показать  

 

make package/<папка_спакетом>/clean
make package/<папка_спакетом>/compile
make package/<папка_спакетом>/prepare
make package/<папка_спакетом>/configure

 

Опубликовано

ЧЯДНТ?

9999.tarПолучение информации...

https://pastebin.com/AhueqJYM

my-super-prog_0.0.0-1_aarch64-3.10.ipkПолучение информации...

my-super-prog_0.0.0-1_mipsel-3.4.ipkПолучение информации...

my-super-prog_0.0.0-1_mips-3.4.ipkПолучение информации...

  Показать контент

 

Опубликовано
  В 21.01.2023 в 09:03, Zeleza сказал:

В приведенном Вами примере нет библиотек

Показать  

Действительно нет!

~ # 
~ # opkg list | grep -E '(libebml|libmatroska|pugixml|spdlog)'
~ # 

Они, как тот суслик... Никто не видит, а они есть. )))

Опубликовано
  В 21.01.2023 в 09:19, zyxmon сказал:
make package/<папка_спакетом>/clean
make package/<папка_спакетом>/compile
make package/<папка_спакетом>/prepare
make package/<папка_спакетом>/configure
Показать  

Прошу пояснить.
После команды make package/<папка_спакетом>/{clean,compile} например, возникает ошибка и после ее возникновения Вы предлагаете  запустить make package/<папка_спакетом>/{prepare,configure}?
Все верно?

 

Опубликовано
  В 21.01.2023 в 12:49, Zeleza сказал:

Все верно?

Показать  

Нет. Это примеры того, что можно делать. Например нужно добавить патчи - выполняем prepare и делаем патчи. И т.д. Криво работает конфигурация - выполняем configure, исправляем руками, далее compile для проверки.

  • 1 месяц спустя...
Опубликовано (изменено)

Бодрого дня Всем!

При сборке возникла необходимость добавить в пакет библиотеки от boost: boost_system и boost_filesystem.
Вопрос - где и что нужно прописать в Makefile, чтобы их добавить?
Костыль нашел: в секцию 
define Package/my_package/install добавил 
     ...
    $(CP) /apps/entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27/opt/lib/libboost_system.so.* $(1)/opt/lib
    $(CP) /apps/entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27/opt/lib/libboost_filesystem.so.* $(1)/opt/lib


и все собирается и запускается, но это же костыль))
Знающие люди помогите понять, какую нужно использовать автоматическую переменную вместо "/apps/entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27" или нужно делать как-то совсем иначе? 

Изменено пользователем Zeleza
Опубликовано

Доброго дня всем гуру

Раз нет ответа, видимо, или не так спросил, или не хватает информации для ответа.
Направьте пожалуйста, что нужно предоставить, чтобы Вы смогли мне помочь в данном вопросе?

  • 4 недели спустя...
Опубликовано (изменено)
  В 22.03.2023 в 16:21, TheBB сказал:
$(CP) $(STAGING_DIR)/opt/lib/libboost_system.so.* $(1)/opt/lib

STAGING_DIR

Показать  

Здравствуйте помогите пожалуйста собрать рабочий v2ray

Вот тут вроде форк рабочий но после установки ошибка

https://github.com/BI7PRK/luci-app-v2ray/releases

Версия прошивки

OpenWrt SNAPSHOT r22557-69812bf8ed / LuCI Master git-23.093.56957-2145121

Версия ядра

5.15.106

Screenshot_2023-04-14-11-15-01-957_com.mi.globalbrowser.jpg

Изменено пользователем kvsplz9860

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.