Я использую 32-битную систему Ubuntu, и моя цель - скомпилировать программу на C ++ для архитектуры arm (beagleblack). Тем не менее, моей программе на C ++ требуется libboost, что означает, что во время компиляции я получаю следующие ошибки:
/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lboost_system
-bash: /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld:: No such file or directory
После прочтения некоторых блогов я думаю, что мне нужно самостоятельно скомпилировать libboost для ARM.
Вопрос: Мое предположение верно? Неужели нет предкомпилированного libboost для ARM, который можно было бы использовать с g++-arm-linux-gnueabi
для компиляции для ARM под Ubuntu 32 bit?
Ubuntu действительно имеет предварительно скомпилированную библиотеку Boost для armhf
(Я предполагаю, что Beagleblack может использовать armhf
). Принятие Вы будете использовать Ubuntu на Beagleblack, существует два пути, которыми можно пойти об этом:
Использовать pbuilder
или sbuild
скомпилировать в chroot armhf
архитектура. Это (обычно) требовало бы, чтобы у Вас была упаковка Debian для того, что Вы хотите скомпилировать. Однако Вы могли (по крайней мере, в sbuild
) также запустите экземпляр chroot, используйте apt-get
получить необходимые библиотеки и скомпилировать Вашу программу там. pbuider
обычно легче настроить.
Используйте мультидугу в ваших интересах и установку armhf
библиотеки по Вашему компьютеру, таким образом, можно скомпилировать и пользоваться существующими библиотеками, не используя chroot. Чтобы сделать это, работать sudo dpkg --add-architecture armhf
, и редактирование /etc/apt/sources.list
содержать deb [arch=armel] http://ports.ubuntu.com/ubuntu-ports saucy main universe
(если Вы не используете Дерзкий, замена соответствующим выпуском. Затем выполненный sudo apt-get update
и sudo apt-get install libboost-system1.53.0:armhf
(или некоторый другой пакет Повышения, снабженный постфиксом :armhf
). Это позволит Вам иметь armhf
библиотеки, установленные в Вашей системе под /usr/lib/aarch64-linux-gnu
.
Обратите внимание, что второй метод выше будет только работать на библиотеки мультидуги, которые должны быть большинством библиотек в Ubuntu repo. Можно также хотеть использовать второй метод в chrooted среде для предотвращения портить систему (см. здесь для инструкций, которые используют Точный, который не осведомлен о мультидуге).