我将一些目标代码( .o)合并到C中的库( .a)。我想将可见的外部符号减少到将在二进制中使用的符号(符号中的符号)不使用,不可见)。
我使用了以下条带方法:
objcopy --strip-all\
--keep-symbol visible_Function1\
--keep-symbol visible_Function2\
objectCode.o libraryCode.a
地图文件按预期显示(仅查看指定的符号)。但与非剥离方法相比,我获得了* .a文件的增加的代码大小( TEXT ),构建了相同的二进制文件。
在使用strip时,知道为什么代码大小会增加吗?
答案 0 :(得分:-1)
您需要在创建libraty时启用优化设置-O1或-O2。
注意:在编译包含此库的应用程序时应使用此选项,如果您在代码中的某个位置使用它,则优化不会删除函数。你不希望任何其他人使用这些功能然后保持在本地。