【发布时间】:2020-02-15 23:37:54
【问题描述】:
我有一个简单的链接器脚本,用于链接 armv7 处理器。我还不需要 libc,所以它并没有真正链接进去。但是现在当我尝试编译一些 C 源代码时,我遇到了对 memset 的未定义引用,该引用应该在编译器附带的 libc.a 中。
所以我所做的是ld -Llib -lc(我将 libc 移到项目的 lib 文件夹中)。它仍然给了我对 memset 的未定义引用。
接下来我直接指定使用 libc.a 与 INPUT(libc.a) 链接,但我仍然得到未定义的引用。
最终起作用的是ld $(objects) lib/libc.a,并且将其链接起来没问题。我看了反汇编,一切都很好,它使用了 memset。
谁能给我解释一下这里发生了什么,我对所有这些东西还是陌生的:)
【问题讨论】:
-
@Someprogrammerdude 你可以假设它是 $(Objects)