常用方法

strip abc/*

功能

从目标文件或可执行文件中剥掉一些符号信息和调试信息,使文件变小。

打包时用最合适不过了,可直接缩身包大小。

使用

测试代码abc.c

#include <stdio.h>

// asdasd asd asdh asjkldh jkashdasgd

void main()
{
    printf("11111\n");
    return 0;
}

​​​​​​​

显示大小为8352 

使用strip瘦身看一下效果

strip a.out

此时大小为6240

确实瘦身了,而且效果很明显

使用正常

结论

由此可见,在strip之后文件变小了,但仍然可以执行, 节省了很多空间。而在调试的时候,就需要符号了。因此,将strip前的文件备份下来用于调试, 而strip后的文件用来实际发布。

另外,strip不仅仅可以针对可执行文件, 还能针对目标文件和动态库等。

在实际的开发中, 经常需要对动态库.so进行strip操作, 减少占地空间。 而在调试的时候(比如用addr2line), 就需要符号了。 因此, 通常的做法是: strip前的库用来调试, strip后的库用来实际发布, 他们两者有对应关系。 一旦发布的strip后的库出了问题, 就可以找对应的未strip的库来定位。

例如某个动态库strip前是50M左右, strip后是20M左右, 可见, 脱脱衣服还是有明显好处的。

我们在调试过程中, 经常涉及到上传库, 库太大时, 很耗费传输时间, 所以还是先用strip来处理一下比较好。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐