0

libx.a 只有一个函数 x() 什么都不做。
liby.a 有两个函数,y() 什么都不做,yx() 调用 libx.a 的 x()。
然后,我有一个 main.c,在函数 main() 中我调用 liby.a 的 y()。当我做链接工作时,我必须添加 libx.a,否则 gcc 将给出错误提示:未定义的对 'x' 的引用。但我只是使用与 libx.a 无关的 y()。
在我的情况下,无论如何让 gcc 忽略 libx.a 吗?或者换句话说,gcc 只能在真正需要 libx.a 时才需要 libx.a 吗?

libpthread.a 和 libmysqlclient.a 可以做到。我有一个使用 libpthread 和 libmysqlclient 的 libm.a。我写了一个main.c,它只调用libm.a中的一个空函数,gcc在链接时不会请求libpthread.a和libmysqlclient.a。libpthread/libmysqlclient 和我的 liby.a 有什么区别??

4

2 回答 2

0

当真正需要 libx.a 时,gcc 可以只要求 libx.a 吗?

是的。事实上,它只在真正需要时才需要它。在这种情况下,确实需要它。

于 2012-11-29T06:39:57.270 回答
0

几分钟前我从另一个 bbs 得到了答案:我们应该在两个单独的源文件中实现 y() 和 yx(),例如 yc 中的 y() 和 yx.c 中的 yx()。完成此操作后,gcc 将不再需要 libx.a!

我测试了一下,是真的!

于 2012-11-29T07:07:11.200 回答