Кросс-компиляция в amd64 для arm
Доброго времени суток!
Решил по случаю чисто сам для себя собрать для raspberry pi2 систему с нуля.
Собрал тулчейн armv7a-hardfloat-linux-gnueabi, произвел необходимые настройки для portage, сделал
# armv7a-hardfloat-linux-gnueabi-emerge system, все получилось в лучшем виде.
Когда попробовал поставить нужные для себя пакеты, зависимости потянули perl, и я наступил на старые грабли с ошибкой в configure (там компилится тестовая программа и ее же потом запускают для теста, естественно, запустить ее нельзя, ругается "cannot execute binary file" и в итоге вылет с ошибкой).
Попробовал поэкспериментировать с qemu-arm и binfmt-misc, и у меня получилось-таки с помощью cross-emerge собрать и установить perl. Перед вызовом cross-emerge я добавил несколько переменных, и к моему удивлению, процесс пошел. :
# LDFLAGS=-L/usr/armv7a-hardfloat-linux-gnueabi/usr/lib LD_LIBRARY_PATH=/usr/armv7a-hardfloat-linux-gnueabi/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.8.3:$LD_LIBRARY_PATH QEMU_LD_PREFIX=/usr/armv7a-hardfloat-linux-gnueabi armv7a-hardfloat-linux-gnueabi-emerge perl
Понятно, что бОльшую часть задач выполнял qemu-arm, но все равно это быстрее, нежели собирать perl в chroot или на самой малине.
Какой хотел задать вопрос...
Мне не совсем нравится такое решение, возможно, есть какой-то кошерный способ сделать все без подобных костылей?
- Для комментирования войдите или зарегистрируйтесь
я тоже на эти грабли
я тоже на эти грабли наступал. кошерный способ - пофиксить автотулсы.... Ну, ты понял.