我正在从源代码构建一个包含头文件(.hpp)和源文件(.cpp)的库。我有一个make文件,它将所有源文件分别编译成相应的目标文件,然后是一个库创建(ar rcs ..)语句,它们组合了所有* .o文件并构建了一个静态库。由此产生的库文件大小很大(大约17 Mb)。相反,当我执行g ++ -o a.out * .cpp时,out文件的大小为1.4 Mb。归档程序命令(ar rcs)是否不从所有单个目标文件中删除冗余信息?我也创建了共享对象,这些对象也很小,但我需要一个静态库文件用于我的目的
答案 0 :(得分:1)
尝试strip
库,调试和符号信息和表可能会占用额外的空间。
此外,ar s
选项可能会对结果存档进行通知(再次strip
,或者只是不使用ar rcs
,只需ar rc
)。
答案 1 :(得分:0)
将静态库链接到最终二进制文件时会发生什么?在链接过程中,有很多额外的数据应该被删除到二进制文件中。