项目场景
报错如下:
../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:159:
28: fatal error: sys/ustat.h: No such file or directory
#include <sys/ustat.h>
^
compilation terminated.
解决办法
修改 libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
文件:
vim libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
首先注释掉 #include <sys/ustat.h>
这行内容(158
行左右):
接着在 250
行左右修改 unsigned struct_ustat_sz = sizeof(struct ustat);
语句,改为如下内容:
// Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
// has been removed from glibc 2.28.
#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
|| defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
|| defined(__x86_64__)
#define SIZEOF_STRUCT_USTAT 32
#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
|| defined(__powerpc__) || defined(__s390__)
#define SIZEOF_STRUCT_USTAT 20
#else
#error Unknown size of struct ustat
#endif
unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
改动如下:
保存并退出,重新 make
。