Сорри за лаймерский вопрос, но не ужели нет простого способа кросскопиляции deb-src пакетов в i386 для офф. поддерживаемой архитектуры?
Имеется дохлая железяка под mips64 с debian7-based ОС, имеется другая "мощная" железяка с i386 архитектуой и Debian7.6.
Необходимо пересобрать пакет freeradius с добавлением специфичных патчей.
Debian7 официально портирован под mips и пакет freeradius под данную архитектуру существует и ставится из штатного репозитоия.
Гуру, подскажите лаймеру наиболее простой способ сборки из deb-source исходников пакета на i386 под mips.
Пытался собрать multiarch toolchain, и emdebian toolchain но ни то ни другое не увенчалось успехом :(
Не верю, чтоб не было штатного метода кросс-компиляции под штатную же архитектуру, но поиски соответствующей хау-тушки не увенчались успехом, не верю, чтоб девелоперы так же мудрили с тулчейнами, должен же быть простой механизм?
Подскажите, плз,
Заранее спасибо!
Кросс-компиляция пакетов под mips в Debian
Пытался собрать multiarch toolchain, и emdebian toolchain но ни то ни другое не увенчалось успехом
сдаётся мне, что multiarch toolchain сейчас и есть самый Ъ способ... в чём затык случился?
Не верю, чтоб не было штатного метода кросс-компиляции под штатную же архитектуру
если ищешь готовый бинарный пакет, то в его существовании есть сомнения...
не верю, чтоб девелоперы так же мудрили с тулчейнами, должен же быть простой механизм?
для стоковой сборки пакетов используются либо нативные либо эмулируемые под qemu билд-фермы... т.к. кросс компиляция работает не для всех пакетов, а в худшем случае производит нерабочие бинарники...
ЗЫ: для сборки multiarch toolchain'а пришлось кой-чего забрать из jessie...
если ищешь готовый бинарный пакет, то в его существовании есть сомнения...
Да, надеялся на готовый пакет, ясно, значит ручкаи
в чём затык случился?
не нашёл пошагового how-to, добавил репозитории с целевой архитектурой (dpkg --add-architecture mips), а дальше на сколько я понял нужен cross-build toolchain под mips, а вот как его правильно собрать и как им пользоваться -- мозгов не хватает.
На сколько я понимаю, https://wiki.debian.org/BuildingCrossCompilers там сказано и выделенно жирным, что эти кросс-тулчейны уже должны быть....
но как найти их -- я не допёр.
apt-get source freeradius
apt-get build-dep -a mips freeradius:
Build-Depends для freeradius не может быть удовлетворена, так как пакет libpcap-dev не найден
хотя пакет стоит....
dpkg-buildpackage -amips -b
не проходит (не удаётся поставить все пакеты под мипс, некоторых нет в репозитории, некоторые то ли не нужны то ли имеют другое название)
ЗЫ: для сборки multiarch toolchain'а пришлось кой-чего забрать из jessie...
можете поподробнее накидать пример для получения готовой среды для сборки под мипс, если не сложно?
Да, надеялся на готовый пакет, ясно, значит ручкаи
если что, то тут я похоже был не прав))
На сколько я понимаю, https://wiki.debian.org/BuildingCrossCompilers там сказано и выделенно жирным, что эти кросс-тулчейны уже должны быть....но как найти их -- я не допёр.
а ещё там сказано:
Please note that most of this page is out-of-date. Emdebian toolchains are no longer supported, and multi-arch toolchains are the future. That said, multi-arch cross-gcc is not yet in Debian. Unofficial snapshots can be obtained from http://toolchains.secretsauce.net/
т.е. или «надо ещё чуть-чуть подождать =) или пользоваться неофициальной репой, или собирать самому...
репа у меня не завилась т.к. версия gcc не соответствует ни sid'у, ни jessie... возможно в течение недели поправят...
Сборку тулчейна делал по этой доке: https://wiki.debian.org/MultiarchCrossToolchainBuild (раздел Local building of multiarch cross-toolchains), но до конца не довёл т.к. места на харде под виртуалку найти сейчас не могу...
Из подводных камней:
На чистом wheezy сборка не работает хотя бы из-за того, что gcc староват...
Желательно перейти хотя бы на jessie полностью... (или я просто дзеном смешения ветвей debian'а плохо владею)
gcc лучше сразу брать 4.9 после сборки 4.8 у меня пакеты не установились из-за конфликтов... (хотя это может быть связано с предыдущим пунктом)
binutils самому собирать не обязательно в jessie он уже запакован: binutils-mips-linux-gnu
пока всё...
СПАСИБО ОГРОМНОЕ!
Вроде победил, установил бинарный кросстул из эмдебиан репозитоия, но вот незадача:
никак не могу победить зависимости:
:~#apt-get build-dep -a mips freeradius
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Зависимость типа Build-Depends для freeradius не может быть удовлетворена, так как пакет libpcap-dev не найден
Пакета под mips-архитектуру, похоже не существует, та как он под архитектуру :all
Гуру, как быть, куда копать далее?
Гуру, как быть, куда копать далее?
Этот пакет не содержит ничего существенного, только документацию. Потому и all. При этом он зависит от libpcap0.8-dev, и я бы попробовал установить последний, а потом попробовал бы снова установить freeradius.
Этот пакет не содержит ничего существенног
Да, я так и понял но в Build-Depends у freeradius значится именно он, а вот почему он не хватает архитектуру :all я так и не понял...
libpcap0.8-dev:mips стоит, поставить его параллельно с libpcap0.8-dev:i386 не удалось :(
попытка установить libpcap-dev:all приводит к попытке заменить libpcap-dev:mips на libpcap-dev:i386....
так... по поводу проблем с установкой библиотек другой архитектуры... есть два ряда граблей:
1) версии для разных архитектур должны совпадать с точности до последней +b1 (подчёркнуто тут)
2) если пакет содержит исполняемые файлы (эльфы или скрипты — не важно, главное, что ложаться в /usr/bin), то он должен быть специальным образом адаптирован и пока этого не сделают с этим ничего не поделаешь, кроме как писать в дебиановские мейллисты/багзиллу. немного инфы
libpcap0.8-dev как раз относится ко вторым из-за pcap-config. сюда же относятся и многие другие -dev пакеты...
apt-get build-dep -a mips freeradius
пробовал так:
apt-get build-dep freeradius:mipsно у меня ставит нативные =(
а в начале было такое воодушивление...
После такого хочется сделать плачевный вывод, что multiarch в дебиане для кросскомпиляции, вообще говоря, не особо пригоден...
Может стоит рассмотреть альтернативы кросскомпиляции? я всё больше склоняюсь к тому, что поднять misp'овый chroot-префикс с qemu-usermod эмуляцией будет проще... К тому же избавит в будущем от потенциальных проблем...
Пробовал поднять debian:mips на qemu, но под неё не оказалось дистрибутива Debian Wheezy :(((
но под неё не оказалось дистрибутива Debian Wheezy
хз где ты искал... http://cdimage.debian.org/debian-cd/7.7.0/mips/iso-cd/
и вообще похоже ты не то пробовал о чём я говорю... Алгоритм примерно такой:
(сейчас под рукой ничего нет, так что буду писать по памяти то, что выделено курсивом — очень условно)
1. mkdir debian-chroot
2. распаковываешь в debian-chroot базовую систему с мипсом... в дебе должны быть механизмы, чтобы её бутстрапить, но угадать сейчас не смогу... можно даже с платы с корня твоей железяки обычный тарбол снять (подразумевая, что там есть работоспособный apt и bash)
3. apt-get install qemu-user-mips-static
4. modprobe binfmt_misc && echo -e 'очень сложное заклинание для mips'a' >/proc/где-то-там/binfmt/misc # гуглится по ключевым словам... в принципе дебианщики могли сделать простой скрипт-обёртку над этим заклинанием
5. ln /usr/bin/qemu-user-mips debian-chroot/usr/bin # или cp если они на разных ФС
6. chroot debian-chroot /bin/bash
дальше можно работать как будто ты в нативной mips системе...само собой, сборка будет идти значительно медленнее, чем нативная, но не будет геморроя кросс компиляции...
Если не понятно, то попозже могу расписать конкретнее...