Мне нужно кросс-компилировать некоторый код, который будет LD_PRELOAD
редактироваться под armel
приложением Linux, созданным для эры Debian Squeeze /usr/lib
(с некоторыми изменениями).
У меня есть подходящие rootfs, которые я скопировал в среду armel и успешно запустил qemu-system-arm
. Программа, с которой мне нужно поиграться, также отлично работает в этой среде. (qemu-arm
к сожалению, segfaults.)
Однако, как все знают ... GCC - это немезида эмуляции - даже эмуляции JITted :) - поэтому я пытаюсь выяснить, как настроить кросс-компиляцию. Я никогда не делал этого раньше, и понятия не имею, с чего начать.
Я понимаю, что мне нужна специальная версия GCC, но ... мне понадобятся библиотеки armel для связи - верно? Я подозреваю, что мой chroot пригодится, но я точно не знаю, как именно.
Я использую Arch, но у меня нет проблем с настройкой виртуальной машины для выполнения компиляции, особенно , если есть дистрибутив Linux с уже готовыми кросс-компиляторами .
Я знаю, что проект emDebian был де-факто способом кросс-компиляции в эпоху Debian Squeeze. По-видимому, произошел некоторый компромисс с серверами репозитория emdebian прямо в том месте, где emdebian был заменен и свернут, поэтому работа должна была пройти и проверить, что все никогда не было выполнено.
Релиз Jessie сместил Debian в сторону многоархивного подхода (не уверен, что это на самом деле, все еще учится), который сводил на нет необходимость в таких вещах, как emdebian.
Но Джесси не Squeeze - и я не уверен в последствиях этого различия - например, версия компилятора отличается. Это главное, на чем я застрял.
(Недавно мне нужно было использовать GCC 3.3 для создания копии QEMU, которая фактически поддерживала поддержку устройства 'N800'. Использование более нового GCC дает работающий двоичный файл QEMU, который просто зависает. Отсюда мое беспокойство по поводу версии компилятора быть отличным от других и просто хотеть разобраться с «тем, что работает» того периода. Я не знаю, с чем я могу играть быстро и свободно, не рискуя разбить вещи ».