gpt4 book ai didi

c - "Undefined Symbol _memset"

转载 作者:行者123 更新时间:2023-12-04 06:17:52 26 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/7009401/

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