当我将它链接到我的 Makefile 中时,我可以从 lib 中修剪一些模块吗?
Posted
技术标签:
【中文标题】当我将它链接到我的 Makefile 中时,我可以从 lib 中修剪一些模块吗?【英文标题】:can i trim some modules from lib when i link it in my Makefile? 【发布时间】:2010-11-12 07:02:59 【问题描述】:例如,我有一个名为 test.a 的 lib 文件。 test.a 有三个模块:test1.o、test2.o、test3.o。我只需要模块 test1.o,我怎样才能在我的 Makefile 中实现这一点。
如果有人知道如何修剪 test2.o 和 test3.o 模块,请告诉我。感谢您的帮助!
【问题讨论】:
【参考方案1】:如果您使用的是静态库,则只有需要的模块会链接到可执行文件中。
如果您使用共享库,则整个库将在运行时加载,无论您使用库中的哪些函数。
【讨论】:
使用共享库时,他必须创建一个单独的库,其中仅包含他想在可执行文件中使用的那些模块。 以test.a为例,你的意思是说,当我运行makefile时,如果我的程序没有使用test2.o和test3.o,它不会链接到可执行?我不需要在 Makefile 中处理它? @user505423:这是我的回忆——你应该试试并确认 重新共享库和“将加载整个库”...现代操作系统仅在使用页面时出现页面错误,因此使用大型共享库几乎没有不必要的开销。当然,这也适用于可执行文件和 .a 问题,并且尽可能少发布代码仍然很好。 @Tony:是的,我认为你是对的。我试了一下,发现每次在我的程序中添加一个模块时,可执行文件都会增加 70 字节。谢谢你的帮助!我现在明白了。以上是关于当我将它链接到我的 Makefile 中时,我可以从 lib 中修剪一些模块吗?的主要内容,如果未能解决你的问题,请参考以下文章
当我将它添加到我的 html 文档时,向上/向下投票系统不起作用
TypeError:无法读取未定义的属性“userAgent”