gpt4 book ai didi

c - "Undefined Symbol _memset"

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

我问了一个类似的问题,但我有一些更新让我很困惑。本质上,我想用链接器链接一些目标文件,如下所示:

/usr/ccs/bin/ld -o q -e start_master -dn -z defs -M ../../../mapfile.q {list of object files}

我收到以下错误:

Undefined                       first referenced 
symbol in file
_memset reconf.o

有趣的是,reconf.c 中没有引用 memset,我也对整个目录进行了 grep,但在任何其他文件中也没有对 _memset 的引用。因此,我想知道为什么我从链接器收到此错误消息,尽管我的源代码中没有任何地方实际使用了 _memset。有人知道这里会发生什么吗?

非常感谢,这个错误让我们精神错乱!

编辑:

我尝试将路径添加到 memset 的库并将其与 -lc 链接并以详细模式运行:

/usr/ccs/bin/ld -o q -e start_master -dn -z defs -z verbose -L/usr/lib -M ../../../mapfile.q {list of object files} -lc

然后我得到以下错误: ld:致命:库-lc:未找到 ld:致命:文件处理错误。没有输出写入 q

虽然 libc.so 显然在/usr/lib 中......

令人困惑

编辑二:

做一些更多的研究,似乎在 Solaris 10 上静态链接消失了,你可以在这里阅读:

http://blogs.oracle.com/rie/entry/static_linking_where_did_it

这可能是我的问题。有谁知道如何重写我的链接器命令以解决此问题?

非常感谢!

最佳答案

可能你做到了:

struct S v = { 0 };

struct S v;
v = (some const-variable).

uint8_t b[100] = { 0 };

.

一些编译器隐式地为这些东西放置了内置的 memset(或 memcpy)。内置 memset 然后称为 _memset (在您的情况下)。一旦你链接并且你的 libc(或者在你的情况下提供标准功能的东西)没有提供它,你就会收到这个链接错误。

关于c - "Undefined Symbol _memset",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023754/

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