如何修复“gcc编译错误(sys/ustat.h:没有这样的文件或目录)?”

ny6fqffe  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(1253)

到目前为止,我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

已安装:二进制GCC-libs libmpc GCC-ada libmpc数据库库
更新:我通过手动注解掉gcc-x.x. x/libsanitizer/sanitizer-common/sanitizer-platform-limits-posix.cc中的 * ustat. h*(第157和250行)来解决这个问题。

eivgtgni

eivgtgni1#

glibc 2.28的发行说明如下:

  • 过时的函数ustat不再可用于新链接的二进制文件;标头<ustat.h><sys/ustat.h>已被删除。不推荐使用此函数,而推荐使用fstatfsstatfs

为了构建GCC 5.5,您有几个选项:

  • 在使用glibc 2.27或更早版本的较旧发行版上构建。
  • the fix to the Go frontend向后移植到GCC 5。(ustat被添加到Go语言中只是偶然的,它的弃用早于Go语言开发的开始,甚至可能早于Google作为一家公司。)
  • 使用configure调用的适当--enable-languages=参数禁用gccgo前端。
9gm1akwq

9gm1akwq2#

除此之外:
更新:我通过手动注解掉gcc-x.x. x/libsanitizer/sanitizer-common/ www.example.com中的ustat. sanitizer-platform-limits-posix.cc(第157和250行)来解决这个问题。
gcc-7.4.0已移除sanitizer-platform-limits-posix.cc中的ustat.h。如果可能,请改用7.4.0。

相关问题