Кросс-компиляция с libboost для архитектуры ARM

Я использую 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?

0
задан 16 June 2014 в 16:27

1 ответ

Ubuntu действительно имеет предварительно скомпилированную библиотеку Boost для armhf (Я предполагаю, что Beagleblack может использовать armhf). Принятие Вы будете использовать Ubuntu на Beagleblack, существует два пути, которыми можно пойти об этом:

  1. Использовать pbuilder или sbuild скомпилировать в chroot armhf архитектура. Это (обычно) требовало бы, чтобы у Вас была упаковка Debian для того, что Вы хотите скомпилировать. Однако Вы могли (по крайней мере, в sbuild) также запустите экземпляр chroot, используйте apt-get получить необходимые библиотеки и скомпилировать Вашу программу там. pbuider обычно легче настроить.

  2. Используйте мультидугу в ваших интересах и установку 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 среде для предотвращения портить систему (см. здесь для инструкций, которые используют Точный, который не осведомлен о мультидуге).

0
ответ дан 16 June 2014 в 16:27

Другие вопросы по тегам:

Похожие вопросы: