【问题标题】:large c++ static library file after linking链接后的大型c++静态库文件
【发布时间】:2023-03-13 14:52:01
【问题描述】:

我正在从我的源代码构建一个库,其中包含头文件 (.hpp) 和源 (.cpp) 文件。我有一个 make 文件,它将所有源文件分别编译到相应的目标文件中,然后是一个库创建 (ar rcs ..) 语句,它结合了所有 *.o 文件并从中构建一个静态库。生成的库文件很大(大约 17 Mb)。相反,当我执行 g++ -o a.out *.cpp 时,输出文件的大小为 1.4 Mb。归档器命令 (ar rcs) 是否没有从所有单个目标文件中删除冗余信息?我还创建了共享对象,它们也很小,但我需要一个静态库文件来实现我的目的

【问题讨论】:

    标签: c++ linker makefile g++


    【解决方案1】:

    试试strip这个库,调试和符号信息以及表格可能会占用额外的空间。

    此外,ar s 选项可能会膨胀生成的存档(同样,strip,或者干脆不使用ar rcs,只使用ar rc)。

    【讨论】:

      【解决方案2】:

      当您将静态库链接到最终二进制文件时会发生什么?有很多额外的数据应该在链接过程中被剥离到二进制文件中。

      【讨论】:

      • 最终的二进制文件是库大小的一半,但仍然是 8 Mb。 .out 约为 1.4 Mb
      猜你喜欢
      • 2022-12-23
      • 2023-03-28
      • 2011-03-16
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多