gpt4 book ai didi

c - 未知类型名称 '__uint64_t'

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:38 26 4
gpt4 key购买 nike

我已经恢复了旧的开发,(嵌入 proC)在迁移后不再编译(oracle 11g 到 12c)。

注意:数据已匿名。

旧环境:

Linux <NOMDELAMACHINE> 2.6.32-642.el6.x86_64 #1 SMP Wed Apr 13 00:51:26 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
Oracle 11g
gcc :
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)
Copyright © 2010 Free Software Foundation, Inc.
Ce logiciel est libre; voir les sources pour les conditions de copie. Il n'y a PAS GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.

新环境:

Linux <NOMDELAMACHINE> 3.10.0-693.17.1.el7.x86_64 #1 SMP Sun Jan 14 10:36:03 EST 2018 x86_64 x86_64 x86_64 GNU/Linux
Oracle 12c
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
Copyright © 2015 Free Software Foundation, Inc.
Ce logiciel est libre; voir les sources pour les conditions de copie. Il n'y a PAS GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.

在老环境下,我们编译的时候没有问题。

另一方面,当我们在新环境上编译时,我们遇到了以下问题:

In file included from /usr/include/signal.h:340:0, 
from /usr/include/sys/wait.h:30,
from /tmp/compilC/inc/LIBPERSO.h:39,
from FichierC.c:27:

/usr/include/bits/sigcontext.h:33:3: erreur: unknown type name ‘__uint64_t’
__uint64_t xstate_bv;
^
/usr/include/bits/sigcontext.h:177:3: erreur: unknown type name ‘__uint64_t’
__uint64_t xstate_bv;
^
/usr/include/bits/sigcontext.h:178:3: erreur: unknown type name ‘__uint64_t’
__uint64_t reserved1[2];
^
/usr/include/bits/sigcontext.h:179:3: erreur: unknown type name ‘__uint64_t’
__uint64_t reserved2[5]; ^

make: *** [FichierC] Erreur 1

我比较了两个环境的 sigcontext,实际上,我没有安装相同的环境:

旧环境信号上下文:

struct sigcontext

{

unsigned short gs, __gsh;

unsigned short fs, __fsh;

unsigned short es, __esh;

unsigned short ds, __dsh;

unsigned long edi;

unsigned long esi;

unsigned long ebp;

unsigned long esp;

unsigned long ebx;

unsigned long edx;

unsigned long ecx;

unsigned long eax;

unsigned long trapno;

unsigned long err;

unsigned long eip;

unsigned short cs, __csh;

unsigned long eflags;

unsigned long esp_at_signal;

unsigned short ss, __ssh;

struct _fpstate * fpstate;

unsigned long oldmask;

unsigned long cr2;

};

sigcontext 新环境:

struct sigcontext

{

__uint64_t r8;

__uint64_t r9;

__uint64_t r10;

__uint64_t r11;

__uint64_t r12;

__uint64_t r13;

__uint64_t r14;

__uint64_t r15;

__uint64_t rdi;

__uint64_t rsi;

__uint64_t rbp;

__uint64_t rbx;

__uint64_t rdx;

__uint64_t rax;

__uint64_t rcx;

__uint64_t rsp;

__uint64_t rip;

__uint64_t eflags;

unsigned short cs;

unsigned short gs;

unsigned short fs;

unsigned short __pad0;

__uint64_t err;

__uint64_t trapno;

__uint64_t oldmask;

__uint64_t cr2;

__extension__ union

{

struct _fpstate * fpstate;

__uint64_t __fpstate_word;

};

__uint64_t __reserved1 [8];

};

编译使用的make文件:

CC=gcc    

# Repertoire des fichiers include ".h"
# ------------------------------------

INCDIR=/tmp/compilC/inc
INCDIRBADS=/tmp/compilC/inc
SRCDIR=/tmp/compilC
OBJDIR=$(SRCDIR)/obj

ECHO=$(ORACLE_HOME)/bin/echodo

CFLAGS=-I$(INCDIR) -I$(INCDIRBADS) -I$(ORACLE_HOME)/precomp/public -DPRECOMP -Dextension -undef -O3 -Wall -v


# Fichiers de declarations ".h" a inclure
# ---------------------------------------
INC=\

$(INCDIR)/header1.h\
$(INCDIR)/header2.h\
$(INCDIR)/header3.h\
$(INCDIR)/header4.h\
$(INCDIR)/header5.h\
$(INCDIR)/header6.h\
$(INCDIR)/header7.h\
$(INCDIR)/header8.h\
$(INCDIR)/header9.h

all: FichierC

# FichierC.o
# ---------

$(OBJDIR)/FichierC.o:\
$(SRCDIR)/FichierC.c $(INC)
@$(ECHO) $(CC) $(CFLAGS) -o $@ -c $(SRCDIR)/FichierC.c

目前,我不知道如何定位我的研究。

我会说问题来自安装不正确的库版本,但我不确定并且作为环境的主人(root 帐户)我无法执行我想测试的操作。

你有什么线索/想法来解锁我吗?

我可以恢复库“sigcontext.h”并将其嵌入到我的 INCDIR 地址的项目中吗?

更新==我将我的代码更新为更加匿名,所以我可以给你更多:

制作:

In file included from /usr/include/signal.h:340:0,
from /usr/include/sys/wait.h:30,
from FichierC.c:8:
/usr/include/bits/sigcontext.h:33:3: erreur: unknown type name ‘__uint64_t’
__uint64_t xstate_bv; ^
/usr/include/bits/sigcontext.h:177:3: erreur: unknown type name ‘__uint64_t’
__uint64_t xstate_bv; ^
/usr/include/bits/sigcontext.h:178:3: erreur: unknown type name ‘__uint64_t’
__uint64_t reserved1[2]; ^
/usr/include/bits/sigcontext.h:179:3: erreur: unknown type name ‘__uint64_t’
__uint64_t reserved2[5]; ^
FichierC.c: In function ‘test’:
FichierC.c:20:4: attention : cette fonction retourne l'adresse d'une variable locale [-Wreturn-local-addr]
return(ach_DateHeure); ^
make: *** [FichierC] Erreur 1

FichierC :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <signal.h>
#include <inttypes.h>
#include <stdint.h>

char ach_DateHeure[500] = {' '};

char *test(void)
{
char ach_DateHeure[500] = {'0'};

return(ach_DateHeure);
}

所以问题出在线上

#include <sys/wait.h>

最佳答案

所以在我的机器上,__uint64_t(带有前导下划线)仅在/usr/include/x86_64-linux-gnu/bits/types.h

并且仅用于/usr/include/x86_64-linux-gnu/bits/*(包括 sigcontext.h)和/usr/include/x86_64-linux-gnu/sys/*

/usr/include/signal.h 包括:

#include <bits/types.h>
#include <bits/signum.h>

然后很久以后:

/* Get machine-dependent `struct sigcontext' and signal subcodes.  */
# include <bits/sigcontext.h>

这些是我建议检查库不一致的地方。

还要检查你的代码是不是直接包含了?

关于c - 未知类型名称 '__uint64_t',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57146459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com