Как исправить "ошибку компиляции gcc (sys / ustat.h: такого файла или каталога нет) в archlinux?" - PullRequest
1 голос
/ 12 мая 2019

На данный момент моей системе archlinux требуется текущая версия gcc (8.3) вместе с gcc 7.2 и gcc 5.5 (по другому пути).

Я пытаюсь скомпилировать исходный код, как показано ниже:

$ ./contrib/download-prerequisites

В сборочном каталоге:

$ ../gcc-5.5.0/configure --prefix=/home/mjonyh/bin/gcc/5.5.0 --disable-multilib --enable-languages=c,c++,fortran

чем обнаружена ошибка

sys/ustat.h: no such file or directory

Уже установлено: binutils gcc-libs libmpc gcc-ada libmpc dejagnu inetutils lib32-gcc-libs doxygen gcc-ada lib32-glibc

Обновление: Я решил проблему, закомментировав ustat.h в gcc-x.x.x / libsanitizer / sanitizer-common / sanitizer-platform-limits-posix.cc (строки № 157 и 250). Потому что archlinux устарел ustat.h в glibc.

1 Ответ

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

В примечаниях к выпуску glibc 2.28 сказано следующее:

  • Устаревшая функция ustat больше не доступна для новых связанных двоичных файлов;заголовки <ustat.h> и <sys/ustat.h> были удалены.Эта функция устарела в пользу fstatfs и statfs.

Для сборки GCC 5.5 у вас есть несколько вариантов:

  • Постройте более старый дистрибутив, который использует glibc 2.27 или более раннюю версию.
  • Backport исправление интерфейса Go для GCC 5. (ustat был добавлен в Go только случайно, его устаревание предшествуетначало разработки Go и, возможно, даже Google как компании.)
  • Отключите интерфейс gccgo, используя подходящий аргумент --enable-languages= для вызова configure.
...