【发布时间】:2015-02-26 12:29:17
【问题描述】:
这两个问题都没有解决我的问题: glib-undefined-reference-to-anything-from-glib 和 undefined-reference-to-pthread-create
我正在编写来自 glibc-2.21 的 snprintf 函数的个性化版本。当我想链接调用新函数 snpprintf() 的 main.o 时,对于 glibc-2.21 函数的每次调用/引用,我都会从链接器收到数十个 undefined reference to 错误。
这是命令:
ar rvs libFaFsprintf.a snpprintf.o vfpprintf.o vsnpprintf.o iovspprintf.o
gcc main.o libFaFsprintf.a -lc -o main
我在库libFafsprintf.a 中有我的目标文件——我提供库还是指定每个目标文件都没有关系。源代码编译没有任何问题。
我还尝试更改我的图书馆和-lc 的顺序 - 没有任何帮助。
它仅在我使用 -static 选项时有效,但我确实不想要将 libc 与可执行文件静态链接。
如何链接程序?
【问题讨论】:
-
会不会是您的 glib 架构与您的对象的架构不匹配?
-
当我静态链接它时,它就可以工作了。这意味着到目前为止一切正常。
-
不,当您静态链接时,您使用的是物理上不同的库。
-
好的。这我不知道。我的
snprintf()的个性化版本是来自 GNU glib-2.2 包的副本。我将它与 glib-2.0 链接 - 这可能是问题吗?但是为什么它在作为静态链接时起作用。静态链接时如何检查使用了哪个库? -
要进行故障排除,1. 使用
libglib-2.x.y.so的完整路径而不是-lglib-2.0。 2.nm <path-to-glib> | grep <undefined-symbol>,你看到了什么?
标签: gcc reference linker undefined glib