LINUX.ORG.RU

Кросскомпиляция minidlna под mips

 


0

1

Всем привет! У меня есть задача скомпилировать свежий (относительно того что в репах) minidlna под openwrt (устройство моё mikrotik 951ui-2hnd а это значит что процессор там MIPS 74Kc). В частности с поддержкой сортировки и thumbnail. Я поставил под Virtualbox ubuntu-16.04-desktop-amd64.iso

И делаю по доке https://wiki.openwrt.org/ru/doc/devel/crosscompile Но на этапе сборки получаю ошибку

sudo make make[1] world make[2] tools/install make[3] -C tools/flock compile make[3] -C tools/flock install make[3] -C tools/tar compile make -r world: build failed. Please re-run make with -j1 V=s to see what's going on /mnt/40/openwrt/include/toplevel.mk:192: recipe for target 'world' failed make: *** [world] Error 1

Откровенно говоря я не уверен нужен ли мне world. Мне бы только тулчейн собрать, как я понимаю, да нужный пакет. Сама прошивка то мне не нужна. Но знаний как это реализовать не хватает. Прошу помочь мне пройти этот тернистый путь.

Спасибо

P.S.


Если запустить как рекомендуют, то ошибка другая

sudo make with -j1 V=s [sudo] password for emoxam: make[1]: Entering directory '/mnt/40/openwrt' make[1]: *** No rule to make target 'with'. Stop. make[1]: Leaving directory '/mnt/40/openwrt' /mnt/40/openwrt/include/toplevel.mk:192: recipe for target 'with' failed make: *** [with] Error 2

emoxam
() автор топика
Ответ на: комментарий от ivanich

да, именно так! Ибо прошивку я не собирал а скачал готовую и залил через tftp. Вот дока https://wiki.openwrt.org/toh/mikrotik/common

По твоей ссылке нет моей архитектуры в списке. Что мне качать? Всяческих ipk я переборобвал много. Но все либо ругаются на архитектуру либо говорят что бинарник not found, хотя вот он лежит с правами 777!

emoxam
() автор топика
Ответ на: комментарий от emoxam

Вообще-то у тебя архитектура https://lede-project.org/docs/instructionset/mips_24kc

https://lede-project.org/toh/hwdata/mikrotik/mikrotik_rb951ui-2hnd

Надеюсь дальше обьяснять не надо?

P.S. Если хочешь все посвежее, в том числе и minidlna, ставь lede ибо openwrt пока в протухшем состоянии.

ivanich ★★
()
Последнее исправление: ivanich (всего исправлений: 1)
Ответ на: комментарий от ivanich

судя по сайт микротик (https://routerboard.com/RB951Ui-2HnD) у меня проц AR9344 а судя по гуглу это таки 74kc (https://wikidevi.com/wiki/Atheros)

Но несмотря на это я качаю https://downloads.lede-project.org/releases/packages-17.01/mips_24kc/packages... распаковываю на компе, заливаю на микротик, и распихиваю скрипт, конфиг и бинарник по соответствующим папкам. Выставляю права для скрипта и бинарника 777 и... [root@OpenWrt /usr/bin]#/etc/init.d/minidlna start start-stop-daemon: can't execute '/usr/bin/minidlna': No such file or directory [root@OpenWrt /usr/bin]#ls -l /usr/bin | grep minidlna -rwxrwxrwx 1 root root 191440 Feb 4 16:49 minidlna [root@OpenWrt /usr/bin]#

Что я делаю не так?

emoxam
() автор топика
Ответ на: комментарий от ivanich

И я таки прав!

cat /proc/cpuinfo system type : Atheros AR9344 rev 2 machine : MikroTik RouterBOARD 951Ui-2HnD processor : 0 cpu model : MIPS 74Kc V4.12

значит собирать мне из исходников. У меня только с этим пакетом беда, все остальное гут!

emoxam
() автор топика
Ответ на: комментарий от emoxam

А для того чтобы собрать тулчейн через buildroot надо иметь 32-ух битную систему? Или можно под любою собирать? Я вроде собрал, но куда не ткнусь все файлы ELF 64-bit LSB executable, x86-64. Ещё и LSB, а не MSB как мне надо.

emoxam
() автор топика
Ответ на: комментарий от zudwa

У меня получилось собрать тулчейн openwrt. Но я совершенно не понимаю как в документации про него упоминается builfroot со своим тулчейном. Что со всем этим делать, как они связаны и какого хрена не работают команды

./configure --build=x86_64-unkown-linux-gnu –host=mips-openwrt-linux-uclibc ./configure --build=x86_64-unkown-linux-gnu –host=mips-openwrt-linux-uclibc-gcc

пишет configure: error: invalid variable name: `–host'

В доке указано что надо запускать ./configure --build=x86_64-unkown-linux-gnu –host=mips-openwrt-linux-uclibc но такого бинарника как mips-openwrt-linux-uclibc у меня в каталоге нет.

Там вообще собралось столько всего что в папках можно потерятся! вот путь к бинарникам /mnt/40/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/OpenWrt-Toolchain-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin

голова кругом, инструкций толковых нет. Руки опускаются

emoxam
() автор топика
Ответ на: комментарий от emoxam

– и — это не одно и тоже

в buildroot кроскомпилятор и утилиты обычно лежат в output/host/usr/bin

чтобы собирать с ./configure лучше опакетить свою программу как здесь:

http://nightly.buildroot.org/#_infrastructure_for_autotools_based_packages

это не так уж и сложно

zudwa
()
Ответ на: комментарий от zudwa

Вот те на! Спасибо! Так ладно, прошёл я этот этап. Теперь собираю из свежескаченных исходников minidlna ./configure --build=x86_64-unkown-linux-gnu --host=mips-openwrt-linux-uclibc

make

file minidlnad minidlnad: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0850cee7017aea052a38a11729f761049a8c91ca, not stripped

Не понял, а почему x86? Почему не MIPS ? Где я ошибся?

emoxam
() автор топика
Ответ на: комментарий от emoxam

Может потому что у меня переменные окружения только на сеанс были. Вот сделал так

PATH=$PATH:/mnt/40/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/OpenWrt-Toolchain-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin

export PATH

STAGING_DIR=/mnt/40/openwrt/staging_dir

export STAGING_DIR

Не уверен что верно, но предположим. Повторил

./configure --build=x86_64-unkown-linux-gnu --host=mips-openwrt-linux-uclibc

И теперь процесс заканчивается на

checking libav/avutil.h usability... no checking libav/avutil.h presence... no checking for libav/avutil.h... no configure: error: libavutil headers not found or not usable

emoxam
() автор топика
Ответ на: комментарий от zudwa

Если buildroot это кросскомпилятор что тогда тут ? git clone -b chaos_calmer git://github.com/openwrt/openwrt.git Или это исходники с вклбюченным buildroot?

Дело в том что у buildroot с офиц. сайта каталог output есть. Но там в /mnt/40/buildroot-2016.11.2/output/host/usr/bin все бинарники по типу mips-buildroot-linux-uclibc-gcc-ar

«ELF 64-bit LSB executable, x86-64, version 1 (SYSV)»

Меня это обезоруживает

emoxam
() автор топика
Ответ на: комментарий от emoxam
root@LeDe:~# cat /proc/cpuinfo 
system type             : Atheros AR9344 rev 2
machine                 : TP-LINK TL-WDR3600/4300/4310
processor               : 0
cpu model               : MIPS 74Kc V4.12

И что мне теперь искать прошивку под другую «архитектуру»?))) Просто чтобы тебе было ясно, на этом роутере стоит прошивка под mips_24kc

P.S. И ты таки не прав

P.P.S Перестань насиловать себе и окружающим мозг, поставь Lede https://downloads.lede-project.org/releases/17.01.0-rc2/targets/ar71xx/mikrotik/ и через opkg устанавливай что хочешь.

ivanich ★★
()
Последнее исправление: ivanich (всего исправлений: 2)
Ответ на: комментарий от zudwa

Какие именно библиотеки? Все пакеты что при такой проблеме упоминались в гугл я поставил. Лучше не стало. У меня при сборке minidlna на самом микротик точно такая же ошибка!

emoxam
() автор топика
Ответ на: комментарий от ivanich

Откуда уверенность что стоит именно 24? И как тогда объяснить что бинарник от 24 не запускается? И зачем искать прошивку? Не понял

emoxam
() автор топика
Ответ на: комментарий от emoxam

Уверенность оттуда что я ее сам и скомпилил.

CONFIG_TARGET_BOARD="ar71xx"
CONFIG_TARGET_SUBTARGET="generic"
CONFIG_TARGET_PROFILE="DEVICE_tl-wdr4300-v1"
CONFIG_TARGET_ARCH_PACKAGES="mips_24kc"

И как тогда объяснить что бинарник от 24 не запускается?

Ну не зря же менеджер пакетов там есть, может ньюансы какие-то, ну и кривые руки не исключены.

Смысл прошиться на что-то отличное от гавна мамонта т.е. openwrt - т.к. в lede есть так необходимый тебе minidlna последней версии, раз уж ты сам не можешь собрать прошивку 2-мя командами.

ivanich ★★
()
Последнее исправление: ivanich (всего исправлений: 1)
Ответ на: комментарий от emoxam

И зачем искать прошивку?

*sarcasm*

Просто ты с пеной у рта доказываешь что у тебя какой-то особенный процессор и архитектура в твоем микроте и из-за этого пустился во все тяжкие по сборке чего-то там. А я тебе показал что точно такой же проц на mips_24kc чувствует себя отлично.

ivanich ★★
()
Ответ на: комментарий от emoxam

checking libav/avutil.h usability... no checking libav/avutil.h presence... no checking for libav/avutil.h... no configure: error: libavutil headers not found or not usable

ну очевидно же, что если в системе сборки нет libav/avutil.h, то ничего не соберется

zudwa
()
Ответ на: комментарий от emoxam

«ELF 64-bit LSB executable, x86-64, version 1 (SYSV)»

если buildroot/openwrt собирается на PC, то так быть и должно. Это кросскомпилятор: запускается на PC, компилирует код под целевую платформу.

Где это все собирается? uname -i какой?

zudwa
()
Ответ на: комментарий от ivanich

В lede тамбнайлы точно также будут отключены.

Shadow ★★★★★
()
Ответ на: комментарий от emoxam

А как ты догадался?)

https://lede-project.org/docs/guide-developer/quickstart-build-images

Даже думать не надо, копипастишь в терминал, только в menuconfig не прощелкать выбрать профиль нужной железки, всяко проще чем целый день пытаться собрать один пакет под несуществующую архитектуру :)

ivanich ★★
()
Ответ на: комментарий от zudwa

Что такое в системе сборки? Вы попроще, я чайник))

emoxam
() автор топика
Ответ на: комментарий от zudwa

uname -i x86_64

Я собираю на ubuntu x64, под mips. А file показывает что я вроде как собрал под x64...

emoxam
() автор топика
Ответ на: комментарий от ivanich

А ты можешь проверить поддерживаются ли сортировка и thumnails ? Что-то я не вижу там опция таких в конфиге, и у меня появляются сомнения в целесообразности переезда.

emoxam
() автор топика
Ответ на: комментарий от emoxam

Это для того чтобы собрать и прошивку и любые пакеты какие хочешь. В menuconfig выбираешь нужные пакеты и после сборки они в bin/packages лежат. Короче в твоем случае проще собрать все чем рукоблудить по наркоманским докам openwrt

ivanich ★★
()
Ответ на: комментарий от ivanich

1 нет грантии что нужные опции есть под LEDE 2 я уже сейчас пытаюсь собрать сам minidlna, скачал исходники ffmpeg но куда их положить не ясно. Что-то куда не положу не видит.

emoxam
() автор топика
Ответ на: комментарий от zudwa

надо было через sudo желать configure!

sudo make clean

sudo ./configure --build=x86_64-unkown-linux-gnu --host=mips-openwrt-linux-uclibc

sudo make

file minidlnad minidlnad: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0850cee7017aea052a38a11729f761049a8c91ca, not stripped

Ну как так то? Почему он под x86-64??

emoxam
() автор топика
Ответ на: комментарий от emoxam

вот такое в openwrt собирается из коробки:

openwrt/bin/ar71xx/packages/packages:

libexif_0.6.21-1_ar71xx.ipk
libffmpeg-audio-dec_3.2.2-1_ar71xx.ipk
libflac_1.3.1-3_ar71xx.ipk
libid3tag_0.15.1b-4_ar71xx.ipk
libjpeg_9a-1_ar71xx.ipk
libogg_1.3.2-2_ar71xx.ipk
libsqlite3_3160000-1_ar71xx.ipk
libvorbis_1.3.5-1_ar71xx.ipk
minidlna_1.1.6+git-8a996b-1_ar71xx.ipk
Packages
Packages.gz
Packages.sig

$ file minidlna 
minidlna: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked, interpreter /lib/ld-musl-mips-sf.so.1, corrupted section header size
zudwa
()
Ответ на: комментарий от zudwa

«в openwrt» тулчейне? Или в самой openwrt прошивке? Какой репозиторий использовался?

У меня при git clone https://github.com/openwrt/openwrt.git пишет что есть циклические зависимости. Побороть не смог.

Я работаю с git clone -b chaos_calmer git://github.com/openwrt/openwrt.git но тут нет minidlna вообще.

emoxam
() автор топика
Ответ на: комментарий от zudwa

Скачал, запускаю make menuconfig а там нет раздела multimedia, и как следствие искать minidlna негде. Нашёл и скачал руками ipk

opkg install minidlna_1.1.6+git-8a996b-1_ar71xx.ipk Installing minidlna (1.1.6+git-8a996b-1) to root... Configuring minidlna. start-stop-daemon: can't execute '/usr/bin/minidlna': No such file or directory

Я явно что-то не понимаю в этой жизни

emoxam
() автор топика
Ответ на: комментарий от emoxam

У меня тулчейн от 12АА только. И надо старый комп доставать. Если куплю usb салазки, чтоб к ноутбуку подключать, соберу.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от zudwa

Делал, не помню чем кончилось но не помогло.

/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), corrupted section header size [root@OpenWrt ~]#file /bin/bash /bin/bash: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), corrupted section header size [root@OpenWrt ~]#

emoxam
() автор топика
Ответ на: комментарий от zudwa

Я не представляю что я должен делать с этим образом.

Если интересно я сейчас остановился вот на этом

root@emoxam-VirtualBox:/mnt/40/minidlna-1.1.5# sudo ./configure --build=x86_64-unkown-linux-gnu --host=mips-openwrt-linux-uclibc --target=mips-openwrt-linux-uclibc CC=/mnt/40/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/OpenWrt-Toolchain-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc LD=mips-openwrt-linux-uclibc-ld

Но слова получаю ошибку «configure: error: libavutil headers not found or not usable»

исходники ffmpeg лежат каталогом ffmpeg в каталоге исходников minidlna, раньше я эту ошибку побеждал запуская configure через sudo, сейчас как видно это не спасает.

emoxam
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.