Я не могу найти ответы, таким образом, я спрашиваю здесь.
Я использую 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?
Один способ добраться aarch64
пакеты в систему сборки состоят в том, чтобы включить его как внешнюю архитектуру:
sudo dpkg --add-architecture aarch64
sudo apt-get update
Теперь можно удалить libsensors4-dev
для Вашей архитектуры сборки и установки это для архитектуры хоста aarch64
:
sudo apt-get install libsensors4-dev- libsensors4-dev:aarch64+
Необходимо удалить пакет архитектуры сборки, потому что это не может сосуществовать с пакетом того же названия другой архитектуры. Зависимость libsensors4:aarch64
однако может сосуществовать с libsensors4
1. Это означает, что можно продолжать выполнять программы в системе сборки, которые динамично связаны против 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>
показать управляющую информацию пакета. Поскольку больше информации видит Спецификацию Мультидуги на Двоичных полях элемента управления пакета.