gpt4 book ai didi

linux - 嵌入在存档中的动态链接器依赖信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:31 24 4
gpt4 key购买 nike

动态库很好。它们中嵌入了信息,可帮助运行时链接器确定最终可执行文件需要加载哪些其他库。它还告诉可执行文件将加载哪些符号

然而,静态库是一个令人头疼的问题。链接器不会自动链接存档的依赖项。当静态链接一个适度复杂或具有深度依赖图的库时,这会变得令人发指。

那么为什么文件不能只包含它们的依赖信息呢?我试图做到这一点。我的想法的关键是/usr/lib/libc.so。此文件不是共享对象文件,而是链接描述文件。

链接器脚本可让您对最终链接器输出进行大量控制,但我只想指定您可以使用的依赖项:

INPUT( -ldependency -ldependecy2 )

这是我的问题。

  • 这看起来很简单,为什么以前没有这样做过?我不可能是第一个想到这个的人。这似乎比 pkg-config 或 libtool(尤其是 libtool 呃)更容易、更直观。
  • 我试图将链接描述文件嵌入存档中,但没有用。为什么不?它可以工作吗?我怀疑对 ranlib 的一些巧妙使用可能会起到作用,但这超出了我的范围。

我目前的解决方案是创建一个名为 libMyLibrary.a 的链接描述文件。它包含

INPUT( -lMyRealLibrary -ldependency1 -ldependency2 )

我必须手动添加依赖项,如果 ld 可以为我提供帮助就好了,但这就是以后的问题了。

最佳答案

要回答您问题的第二部分,ar p ARCHIVE SCRIPT 将 cat 包含在 ARCHIVE 中的 SCRIPT 的内容。或 ar x ARCHIVE SCRIPT 提取文件,然后将其传递给链接器,如 ld blah blah -TSCRIPT

关于linux - 嵌入在存档中的动态链接器依赖信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/573163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com