Сборка кросс-компилятора: pthread.h: Нет такого файла или каталога - PullRequest
0 голосов
/ 20 мая 2019

В настоящее время я пытаюсь скомпилировать свой собственный кросс-компилятор gcc 9.1.0 для цели aarch64-linux-gnu. Я использовал этот урок: https://wiki.osdev.org/GCC_Cross-Compiler

Кажется, что процесс компиляции для компилятора gcc и g ++ завершается без ошибок, но всегда, когда я пытаюсь скомпилировать libgcc с помощью команды make all-target-libgcc, я сталкиваюсь с этой ошибкой:

In file included from ../../../gcc-9.1.0/libgcc/gthr.h:148,
                 from ../../../gcc-9.1.0/libgcc/libgcov-interface.c:27:
./gthr-default.h:35:10: fatal error: pthread.h: No such file or directory
   35 | #include <pthread.h>
      |          ^~~~~~~~~~~
compilation terminated.

g++ --version на моих печатных машинах:

g++ (GCC) 9.1.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

И моя команда конфигурации для gcc: ../gcc-9.1.0/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --without-headers С:

export TARGET=aarch64-linux-gnu
export PREFIX=/opt/aarch64-linux-gnu

Что я забыл?

1 Ответ

0 голосов
/ 21 мая 2019

Из руководства по установке GCC:

Чтобы создать GCC, стандартная библиотека C и заголовки должны присутствовать для всех целевых вариантов, для которых будут создаваться целевые библиотеки (а не только для вариантакомпилятор хоста C ++).

Итак, вам нужен libc для aarch64.

Если вы хотите создать его самостоятельно, у Preshing есть хорошая статья на эту тему, которую я не прочитал полностью, но в любом случае рекомендую.У него даже есть картинка с упоминанием pthread.h и libgcc.a.

AFAIK. GCC может подобрать символическую ссылку на источники newlib и автоматически создать ее в процессе создания полного кросс-компилятора с целевыми библиотеками.,Не уверен насчет Глибца.

...