链接后的大型c ++静态库文件

时间:2011-03-18 23:19:55

标签: c++ linker makefile g++

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

2 个答案:

答案 0 :(得分:1)

尝试strip库,调试和符号信息和表可能会占用额外的空间。

此外,ar s选项可能会对结果存档进行通知(再次strip,或者只是不使用ar rcs,只需ar rc)。

答案 1 :(得分:0)

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