крест linaro, компилирующий с .deb зависимостью

Я не могу найти ответы, таким образом, я спрашиваю здесь.

Я использую Linaro 64 бита кросс-компилятор ARM для компиляции моего кода локальной Ubuntu 14.04 64bit Linux на Intel (gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++).

Мой код требует для использования libsensor4 и libsensor4-dev с опцией компоновщика -lsensors. У меня нет проблемы при компиляции моего кода с помощью хоста Ubuntu 14.04 на 64 бита Linux на Intel. Но каждый раз, когда я компилирую свой код с помощью кросс-компилятора ARM на 64 бита, он имеет ошибки:

cannot find -lsensors

и

sensors/sensors.h: no such file or directory.

-lsensors от libsensors4.deb и sensors.h от libsensors4-dev. таким образом, как я могу получить те два пакета в кросс-компилятор Linaro?

0
задан 13 April 2017 в 10:41

1 ответ

Один способ добраться aarch64 пакеты в систему сборки состоят в том, чтобы включить его как внешнюю архитектуру:

sudo dpkg --add-architecture aarch64
sudo apt-get update

Теперь можно удалить libsensors4-dev для Вашей архитектуры сборки и установки это для архитектуры хоста aarch64:

sudo apt-get install libsensors4-dev- libsensors4-dev:aarch64+

Необходимо удалить пакет архитектуры сборки, потому что это не может сосуществовать с пакетом того же названия другой архитектуры. Зависимость libsensors4:aarch64 однако может сосуществовать с libsensors41. Это означает, что можно продолжать выполнять программы в системе сборки, которые динамично связаны против libsensors4 но Вы не можете использовать libsensors4-dev связать новые программы архитектуры сборки против него.

Я не знаю, как Вы настроили и установили кросс-компилятор, но GCC обычно берет канонические местоположения для заголовочных файлов (/usr/include) и файлы библиотеки (/usr/lib/<architecture>-<system-type>) который является точно туда, где DPKG извлекает их из libsensors4-dev (любая архитектура). Если это не так можно сказать, что GCC/G ++ для добавления включают каталоги файла с -I<PATH> и каталоги библиотеки с -L<PATH>. Кроме того, можно перечислить текущий, включают каталоги с gcc -xc++ -E -v /dev/null и текущие каталоги библиотеки с gcc gcc -print-search-dirs.


1 можно проверить, может ли пакет сосуществовать со своим “одноуровневым элементом” другой архитектуры, если Вы смотрите на Multi-Arch поле в управляющей информации пакета. “то же” означает, что может сосуществовать. Использовать dpkg-query -s <PACKAGE>, apt-cache show <PACKAGE>, или dpkg-deb -I <DEB-FILE> показать управляющую информацию пакета. Поскольку больше информации видит Спецификацию Мультидуги на Двоичных полях элемента управления пакета.

0
ответ дан 3 November 2019 в 11:33

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

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