gpt4 book ai didi

c++ - 提取大型库的小部分(fx boost)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:46 24 4
gpt4 key购买 nike

我想知道是否有一种自动提取大型 C++ 库的一小部分的方法。

假设我在某个项目中只需要 boost::rational。但是整个 boost 1.42 占用了 279 MiB!

为了让我的项目保持“自包含”(fx 对于一些学校作业),我希望能够包括 boost::rational 以及我自己的源代码。 (想法是,我的老师不必为了编译而提前安装 1000 个库)

我知道这违反了良好做法,因为实际上安装整个 boost 会更好 - 但这个论点仍然适用于其他(鲜为人知的)大型库。

我想这个提取可以通过遍历根#include 的#include 依赖树来轻松完成(比如 boost/rational.hpp);但是有这样的工具吗?它叫什么名字?

最佳答案

在 Linux 下,您可以使用 "x" 标志到 "ar" 从库中提取所有目标文件。

您可以使用"nm" 来确定您的代码需要哪些符号,以及哪些(库)目标文件定义它们。 (有一个可选的 --demangle 标志,这可能有助于人类阅读输出。)

然后您可以构建一个仅包含所需目标文件的新库。 (通过“ar”和“ranlib”。)或者直接在命令行上编译(链接)它们。

这是一个简单的脚本问题,可以找到您的(已编译)目标代码中缺少的符号,然后库中的哪些目标文件定义了它们。当然还有那些需要其他库文件的库目标文件中缺少哪些符号……以及这些新库(对象)文件中缺少的符号……等等。等等。

它归结为(通常)收获太少的大量工作。尤其是当您遇到弱符号、间接引用等问题时。

关于c++ - 提取大型库的小部分(fx boost),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119726/

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