У меня есть файл t_cap_get_file.c (из книги TLPI), который использует функции cap_get_file, cap_to_text и т. д.
При использовании Ubuntu Linux 20.04 для успешной компиляции с помощью собственного gcc мне нужно sudo apt install libcap-dev. Теперь у меня есть /usr/lib/x86_64-linux-gnu/libcap.a, я скомпилировал и связал все в порядке.
Далее я хочу скомпилировать его для ARM64, поэтому устанавливаю компилятор gcc ARM64 с помощью команды:
sudo apt install gcc-aarch64-linux-gnu Теперь у меня есть aarch64-linux-gnu-gcc. Тогда продолжайте.
aarch64-linux-gnu-gcc -g t_cap_get_file.c -lcap И это терпит неудачу. Компоновщик(ld) говорит, что невозможно найти -lcap .
Тогда мой вопрос: как я могу получить ARM64-версию libcap.a? Следующий apt install не приносит успеха.
$ sudo apt install libcap-dev:aarch64 Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово E: Невозможно найти пакет libcap-dev:aarch64.

Пример кода ниже:
#include #include #include #include #include #define errExit(msg) do { perror(msg); выход (EXIT_FAILURE); \ } пока (0) интервал main(int argc, char *argv[]) { cap_t шапки; символ *стр; если (argc < 2) { fprintf(stderr, "Использование: %s \n", argv[0]); выход (EXIT_FAILURE); } /* Возможности получения и отображения файлов */ заглавные буквы = cap_get_file(argv[1]); если (caps == NULL) { если (ошибка == ЭНОДАТА) printf("К этому файлу не прикреплены никакие возможности\n"); еще errExit("cap_get_file"); } еще { ул = cap_to_text (прописные буквы, NULL); если (строка == NULL) errExit("cap_to_text"); printf("Возможности: %s\n", str); cap_free (стр); } cap_free (шапки); выход (EXIT_SUCCESS); }
Мобильная версия