gpt4 book ai didi

c - 对 `__kmalloc' 的 undefined reference

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

编译使用 SCTP 内核 header 的代码时 <sctp/chunk.h>我遇到了一个令人费解的编译器错误(蓝色文本而不是读取),它是由调用 kmalloc 触发的其原型(prototype)在 <linux/slob-def.h> 中定义的函数.这是导致它的函数:

/* Allocate and initialize datamsg. */
SCTP_STATIC struct sctp_datamsg *sctp_datamsg_new(gfp_t gfp)
{
struct sctp_datamsg *msg;
msg = kmalloc(sizeof(struct sctp_datamsg), gfp);
if (msg) {
sctp_datamsg_init(msg);
SCTP_DBG_OBJCNT_INC(datamsg);
}
return msg;
}

gcc 错误信息(原生 C 编译):

/tmp/ccKDKVjf.o: In function `sctp_datamsg_new':
s.c:(.text+0x2215): undefined reference to `__kmalloc'
collect2: error: ld returned 1 exit status

所以我想知道 kmalloc 是否正确定义函数源代码(或者根本没有实际实现,或者如果调用此函数的代码只能在内核模式下编译。我实际上并没有尝试构建输出文件(还),我在 Emacs 中发出的编译命令是: gcc s.c(其中 s.c 是包含 .c header 的 <sctp/chunk.h> 文件——只是试图确保在构建输出文件之前一切都正确编译)。

最佳答案

那是链接器错误,代码编译正常。下次,指定 -c 以避免链接。

关于c - 对 `__kmalloc' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816367/

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