«ОШИБКА: НЕИЗВЕСТНАЯ ПЕРЕМЕННАЯ INT64_T_TYPEDEF» СБОРКА МЕЗОНА:GTK 3, GTK 4.4.0, СБОЙ СБОРКИ САМОАНАЛИЗА GOOBJECT

#gtk3 #meson-build #gtk4

Вопрос:

Я пытаюсь создать GTK 4.4 и самоанализ GOObject с помощью системы сборки meson. Каждая попытка сборки мезона приводит к одной и той же ошибке…ОШИБКА: Неизвестная переменная «int64_t_typedef». Программы, которые я пробовал, — это GTK 4.4, Самоанализ GOObject 1.68.0, GLIB 2.68.3, Pango 1.48.8. каждая из них выдает вышеуказанную ошибку. Я добавил stdint.h, inttypes.h, check.h, но безрезультатно. Как я могу устранить эту ошибку, даже uint_typedef выдает ту же ошибку. Также во время компиляции я вижу, что «uintmax_t в stdint.h» компилируется: НЕТ «uintmax_t в inttypes.h» компилируется: НЕТ. Я знаю, что это тоже нехорошо. Есть идеи, как я могу исправить эти ошибки? Единственное, что построит мезон, — это «Привет, мир», и все! Ничто GTK 3 или 4 не будет построено без вышеуказанных ошибок. Любые предложения будут высоко оценены.

FWIW все поисковые запросы в Google, на форумах и т. Д. Производят только одно попадание, и, следуя его предложениям, не совершили ничего, кроме тех же ошибок.

BASH_OUTPUT для GLIB_2.68.3

 [  SPLINTER  ]:>>>pwd
/opt/glib_2.68.3
[  SPLINTER  ]:>>>meson setup builddir
The Meson build system
Version: 0.59.1
Source dir: /opt/glib_2.68.3
Build dir: /opt/glib_2.68.3/builddir
Build type: native build
Project name: glib
Project version: 2.69.2
C compiler for the host machine: cc (gcc 7.5.0 "cc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0")
C linker for the host machine: cc ld.bfd 2.30
C   compiler for the host machine: c   (gcc 7.5.0 "c   (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0")
C   linker for the host machine: c   ld.bfd 2.30
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -fno-strict-aliasing: YES 
Checking if "GNU C visibility attributes test" compiles: YES 
Compiler for C supports arguments -fvisibility=hidden: YES 
Message: Enabling various debug infrastructure
Has header "alloca.h" : YES 
Has header "crt_externs.h" : NO 
Has header "dirent.h" : YES 
Has header "float.h" : YES 
Has header "fstab.h" : YES 
Has header "grp.h" : YES 
Has header "inttypes.h" : YES 
Has header "limits.h" : YES 
Has header "linux/magic.h" : YES 
Has header "locale.h" : YES 
Has header "mach/mach_time.h" : NO 
Has header "memory.h" : YES 
Has header "mntent.h" : YES 
Has header "poll.h" : YES 
Has header "pwd.h" : YES 
Has header "sched.h" : YES 
Has header "spawn.h" : YES 
Has header "stdatomic.h" : YES 
Has header "stdint.h" : YES 
Has header "stdlib.h" : YES 
Has header "string.h" : YES 
Has header "strings.h" : YES 
Has header "sys/auxv.h" : YES 
Has header "sys/event.h" : NO 
Has header "sys/filio.h" : NO 
Has header "sys/inotify.h" : YES 
Has header "sys/mkdev.h" : NO 
Has header "sys/mntctl.h" : NO 
Has header "sys/mnttab.h" : NO 
Has header "sys/mount.h" : YES 
Has header "sys/param.h" : YES 
Has header "sys/resource.h" : YES 
Has header "sys/select.h" : YES 
Has header "sys/statfs.h" : YES 
Has header "sys/stat.h" : YES 
Has header "sys/statvfs.h" : YES 
Has header "sys/sysctl.h" : YES 
Has header "sys/time.h" : YES 
Has header "sys/times.h" : YES 
Has header "sys/types.h" : YES 
Has header "sys/uio.h" : YES 
Has header "sys/vfs.h" : YES 
Has header "sys/vfstab.h" : NO 
Has header "sys/vmount.h" : NO 
Has header "sys/wait.h" : YES 
Has header "termios.h" : YES 
Has header "unistd.h" : YES 
Has header "values.h" : YES 
Has header "wchar.h" : YES 
Has header "xlocale.h" : NO 
Checking if "malloc.h" compiles: YES 
Has header "linux/netlink.h" : YES 
Checking if "statx() test" compiles: NO 
Header <locale.h> has symbol "LC_MESSAGES" : YES 
Checking whether type "struct stat" has member "st_mtimensec" : NO 
Checking whether type "struct stat" has member "st_mtim.tv_nsec" : YES 
Checking whether type "struct stat" has member "st_atimensec" : NO 
Checking whether type "struct stat" has member "st_atim.tv_nsec" : YES 
Checking whether type "struct stat" has member "st_ctimensec" : NO 
Checking whether type "struct stat" has member "st_ctim.tv_nsec" : YES 
Checking whether type "struct stat" has member "st_birthtime" : NO 
Checking whether type "struct stat" has member "st_birthtimensec" : NO 
Checking whether type "struct stat" has member "st_birthtim" : NO 
Checking whether type "struct stat" has member "st_birthtim.tv_nsec" : NO 
Checking whether type "struct stat" has member "st_blksize" : NO 
Checking whether type "struct stat" has member "st_blocks" : NO 
Checking whether type "struct statfs" has member "f_fstypename" : NO 
Checking whether type "struct statfs" has member "f_bavail" : NO 
Checking whether type "struct dirent" has member "d_type" : YES 
Checking whether type "struct statvfs" has member "f_basetype" : NO 
Checking whether type "struct statvfs" has member "f_fstypename" : NO 
Checking whether type "struct tm" has member "tm_gmtoff" : YES 
Checking whether type "struct tm" has member "__tm_gmtoff" : NO 
Compiler for C supports arguments -Wduplicated-branches: YES 
Compiler for C supports arguments -Wimplicit-fallthrough: YES 
Compiler for C supports arguments -Wmisleading-indentation: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wno-bad-function-cast: YES 
Compiler for C supports arguments -Wno-cast-function-type: NO 
Compiler for C supports arguments -Wno-pedantic: YES 
Compiler for C supports arguments -Wno-format-zero-length: YES 
Compiler for C supports arguments -Werror=declaration-after-statement: YES 
Compiler for C supports arguments -Werror=format=2: YES 
Compiler for C supports arguments -Werror=implicit-function-declaration: YES 
Compiler for C supports arguments -Werror=init-self: YES 
Compiler for C supports arguments -Werror=missing-include-dirs: YES 
Compiler for C supports arguments -Werror=missing-prototypes: YES 
Compiler for C supports arguments -Werror=pointer-arith: YES 
Compiler for C supports link arguments -Wl,-z,nodelete: YES 
Compiler for C supports link arguments -Wl,-Bsymbolic-functions: YES 
Checking for function "close_range" : NO 
Checking for function "endmntent" : YES 
Checking for function "endservent" : YES 
Checking for function "epoll_create" : YES 
Checking for function "fallocate" : YES 
Checking for function "fchmod" : YES 
Checking for function "fchown" : YES 
Checking for function "fdwalk" : NO 
Checking for function "fsync" : YES 
Checking for function "getauxval" : YES 
Checking for function "getc_unlocked" : YES 
Checking for function "getfsstat" : NO 
Checking for function "getgrgid_r" : YES 
Checking for function "getmntent_r" : YES 
Checking for function "getpwuid_r" : YES 
Checking for function "getresuid" : YES 
Checking for function "getvfsstat" : NO 
Checking for function "gmtime_r" : YES 
Checking for function "hasmntopt" : YES 
Checking for function "inotify_init1" : YES 
Checking for function "issetugid" : NO 
Checking for function "kevent" : NO 
Checking for function "kqueue" : NO 
Checking for function "lchmod" : NO 
Checking for function "lchown" : YES 
Checking for function "link" : YES 
Checking for function "localtime_r" : YES 
Checking for function "lstat" : YES 
Checking for function "mbrtowc" : YES 
Checking for function "memalign" : YES 
Checking for function "mmap" : YES 
Checking for function "newlocale" : YES 
Checking for function "pipe2" : YES 
Checking for function "poll" : YES 
Checking for function "prlimit" : YES 
Checking for function "readlink" : YES 
Checking for function "recvmmsg" : YES 
Checking for function "sendmmsg" : YES 
Checking for function "setenv" : YES 
Checking for function "setmntent" : YES 
Checking for function "strerror_r" : YES 
Checking for function "strnlen" : YES 
Checking for function "strsignal" : YES 
Checking for function "strtod_l" : YES 
Checking for function "strtoll_l" : YES 
Checking for function "strtoull_l" : YES 
Checking for function "symlink" : YES 
Checking for function "timegm" : YES 
Checking for function "unsetenv" : YES 
Checking for function "uselocale" : YES 
Checking for function "utimes" : YES 
Checking for function "valloc" : YES 
Checking for function "vasprintf" : YES 
Checking for function "vsnprintf" : YES 
Checking for function "wcrtomb" : YES 
Checking for function "wcslen" : YES 
Checking for function "wcsnlen" : YES 
Checking for function "sysctlbyname" : NO 
Checking for function "statvfs" : YES 
Checking for function "statfs" : YES 
Checking for function "if_indextoname" : YES 
Checking for function "if_nametoindex" : YES 
Checking for function "splice" : YES 
Checking for function "stpcpy" : YES 
Checking for function "posix_memalign" : YES 
Checking for function "posix_spawn" : YES 
Checking if "strerror_r() returns char *" compiles: YES 
Checking for function "snprintf" : YES 
Checking for function "strcasecmp" : YES 
Checking for function "strncasecmp" : YES 
Header <sys/sysmacros.h> has symbol "major" : YES 
Header <dlfcn.h> has symbol "RTLD_LAZY" : YES 
Header <dlfcn.h> has symbol "RTLD_NOW" : YES 
Header <dlfcn.h> has symbol "RTLD_GLOBAL" : YES 
Header <dlfcn.h> has symbol "RTLD_NEXT" : YES 
Message: Checking whether to use statfs or statvfs .. statvfs
Checking for function "mkostemp" : YES 
Checking if "futex(2) system call" links: YES 
Checking if "eventfd(2) system call" links: NO 
Checking if "__uint128_t available" compiles: YES 
Checking if "clock_gettime" links: YES 
Checking if "dlopen() and dlsym() in system libraries" links: NO 
Checking if "dlopen() and dlsym() in libdl" links: YES 
Library dl found: YES
Checking if "open() option O_DIRECTORY" compiles: YES 
Checking if "fcntl() option F_FULLFSYNC" compiles: NO 
Checking if "C99 vsnprintf" runs: YES
Checking if "C99 snprintf" runs: YES
Checking if "Unix98 printf positional parameters" runs: YES
Checking if "nl_langinfo and CODESET" links: YES 
Checking if "nl_langinfo (PM_STR)" links: YES 
Checking if "nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)" links: YES 
Checking if "nl_langinfo (ALTMON_n)" links: YES 
Checking if "nl_langinfo (_NL_ABALTMON_n)" links: YES 
Checking if "nl_langinfo and _NL_TIME_CODESET" links: YES 
Checking if "signed" compiles: YES 
Header <stddef.h> has symbol "ptrdiff_t" : YES 
Checking if "sig_atomic_t" links: NO 
Checking if "long long" compiles: YES 
Checking if "long double" compiles: YES
Header <stddef.h> has symbol "wchar_t" : YES
Header <wchar.h> has symbol "wint_t" : YES
Checking if "uintmax_t in inttypes.h" compiles: NO
Checking if "uintmax_t in stdint.h" compiles: NO
Checking for size of "char" : 1
Checking for size of "short" : 2
Checking for size of "int" : 4
Checking for size of "void*" : 8
Checking for size of "long" : 8
Checking for size of "long long" : 8
Checking for size of "size_t" : 8
Checking for size of "ssize_t" : 8
Checking if "int64_t is long" compiles: NO
Checking if "int64_t is long long" compiles: NO
Checking for alignment of "char" : 1
Checking for alignment of "short" : 2
Checking for alignment of "int" : 4
Checking for alignment of "void*" : 8
Checking for alignment of "long" : 8
Checking for alignment of "long long" : 8
Checking for alignment of "size_t" : 8
Checking for size of "wchar_t" : 4

meson.build:1415:3: ERROR: Unknown variable "int64_t_typedef" 

A full log can be found at /opt/glib_2.68.3/builddir/meson-logs/meson-log.txt
[  SPLINTER  ]:>>>
 

Любые предложения о том, как работать с int64_t_typedef, я бы хотел это услышать.

ОБНОВЛЕНИЕ: С 08252021 Заменены типы C. h и inttypes.h для заголовков C очистил ошибки INT64_T_TYPEDEF и UINT64_T_TYPEDEF. Версии C, которые у меня были локально, отсутствовали в определениях типов INT64_T и UINT64_. Так что с этой тайной, по крайней мере, покончено. Следующая ошибка теперь:

ОШИБКА: Обнаружена проблема: Не удалось найти необходимые компоненты для ARPA C_IN. Вот где он сейчас находится. Любые предложения по поводу ARPA и C_IN, которые в моем случае не существуют, как и ARPA каталога.

Любой, кто осмелится предположить, что я весь внимание.

Кстати, я пробовал тест конфигурации компилятора, как предложил PMOD, и все выглядит хорошо:) спасибо за ввод!

Ответ №1:

Ошибка, по-видимому, возникает из-за неудачной компиляции тестовых программ для int64_t, поэтому мы видим в журнале перед:

 Checking if "int64_t is long" compiles: NO
Checking if "int64_t is long long" compiles: NO
 

Ваш следующий шаг-выяснить, почему эти небольшие программы не удалось скомпилировать, т. Е. скопировать в test.c как есть и попытаться скомпилировать:

 #if defined(_AIX) amp;amp; !defined(__GNUC__)
#pragma options langlvl=stdc99
#endif
#pragma GCC diagnostic error "-Wincompatible-pointer-types"
#include <stdint.h>
#include <stdio.h>
int main () {
   int64_t i1 = 1;
   long *i2 = amp;i1;
   return 1;
}
 

один раз с длинным и один раз с длинным длинным -> проверьте результат.

Кстати, проверьте также, не испортили ли вы каким-либо образом среду компиляции, например, установив некоторые флаги в CFLAGS:

 $ echo $CFLAGS
 

Обновить

Хорошо, что-то не так с путями включения, которые используются компилятором; вы можете выполнить следующую предварительную обработку фиктивного кода, чтобы проверить пути по умолчанию:

 gcc -E -v -
<Ctrl-C>
 

Проверьте, как настроен компилятор, его параметры по умолчанию, в конце концов, включают пути.

Комментарии:

1. Во-первых, спасибо за ответ, во-вторых, нет, не установлено CFLAGS, и нет, этот пример не компилируется, он выдает тот же тип ошибки: В файле, включенном из test_1.c:5:0: /usr/include/stdint.h:111:9: ошибка: неизвестное имя типа ‘__intmax_t’ typedef __intmax_t intmax_t; ^~~~~~~~~~ /usr/include/stdint.h:112:9: ошибка: неизвестно имя типа ‘__uintmax_t’ тип __uintmax_t uintmax_t;

2. Похоже, что типы c вызываются программой на языке C, и это является источником ошибки. И stdint.h, и inttypes.h легко компилируются с помощью G —ansi, так что это не так.

3. Хорошо, с сегодняшнего дня проблема INT64_T решается с помощью файла C inttypes.h.meson теперь принимает INT64_T и UINT64_T без жалоб!!, НО весь проект GOOBJECT теперь останавливается на поиске включений для ARPA_C, поэтому я продолжу это и, надеюсь, обновлю позже сегодня.