Multilib и Multiarch

У меня это работает (но на CentOS 7.1). Я что-то пропустил?

read -p "Send files from date (MM-DD-YYYY) : " fromdate
if [[ -z ${fromdate// } ]]
then
    echo "Empty input"
    fromdate=$(date +%m-%d-%Y)
fi
echo "Input: $fromdate"

find /path/to/directory -maxdepth 1 -name "*$fromdate*"
2
24.07.2018, 08:48
1 ответ

Это разные подходы к одной и той же общей проблеме с несколько разными областями :выполнения двоичных файлов, созданных для разных архитектур.

Когда вы получаете бинарный файл для запуска, вам нужны три вещи :библиотеки, которые ему нужны (, если они есть, включая его динамический загрузчик ), поддержку системных вызовов, которые он делает, и возможность интерпретировать содержащиеся в нем машинные инструкции. Multilib и multiarch обращаются к первым.

Multilib работает с таблицей известных вариантов для каждой архитектуры. Первоначально это относилось к вариантам ABI, , например. на MIPS, но в настоящее время наиболее распространенным его использованием является поддержка 32 -бит на x86 :обычно он определяет lib32как 32 -битный каталог библиотеки (и это определение для x86 -конкретный ). Таким образом, установка с несколькими библиотеками может предоставить 64-битный -загрузчик в /libи 32-битный -в /lib32. На стороне компилятора вы указываете -m32для создания 32-битного -битного двоичного файла с использованием мультибиблиотеки.

Мультиархитектура является более общей, :ее определения не зависят от архитектуры хоста. Все библиотеки находятся в подкаталоге lib, соответствующем их целевой архитектуре; /usr/lib/x86_64-linux-gnu/, /usr/lib/i386-linux-gnuи т. д. На стороне компилятора вы используете соответствующий кросс-компилятор -.

Какой подход вы используете для запуска 32 -битного двоичного файла, зависит от дистрибутива. Debian и его производные теперь используют multiarch, другие дистрибутивы используют multilib.

8
27.01.2020, 21:53

Теги

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