我问了类似的问题,但我有一些更新,这确实让我感到困惑。本质上,我想使用链接器链接多个目标文件,如下所示:
/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 。有人知道这里会发生什么吗?
非常感谢,这个错误让我们精神不振!
EDIT:
我尝试添加 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 中......
令人困惑
EDIT II:
做了更多研究,似乎在 Solaris 10 上静态链接消失了,您可以在此处阅读:
http://blogs.oracle.com/rie/entry/static_linking_where_did_it
也许这是我的问题。有谁知道如何重写链接器命令来解决此问题?
非常感谢!