我问了一个类似的问题,但我有一些更新让我很困惑。本质上,我想用链接器链接多个目标文件,如下所示:
/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: fatal: library -lc: not found ld: fatal: 文件处理错误。没有输出写入 q
这虽然 libc.so 显然在 /usr/lib ...
令人困惑
编辑二:
进行更多研究后,似乎在 Solaris 10 上静态链接消失了,您可以在此处阅读:
http://blogs.oracle.com/rie/entry/static_linking_where_did_it
可能这是我的问题。有谁知道如何重写我的链接器命令以解决此问题?
非常感谢!