微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Clang 生成的可执行文件是 94% 的空字节,如何缩小它?

如何解决Clang 生成的可执行文件是 94% 的空字节,如何缩小它?

我已经使用以下标志编译了我的项目:clang -MMD -MP -D_FORTIFY_SOURCE=2 -Weverything -Wno-poison-system-directories -O2 -fPIE -fPIC -fstack-protector -finline-functions -march=native -mtune=native src/getargv.c -o bin/getargv 它产生了一个 49KB (50224B) 大和 96% (47799B) NULL 字节的可执行文件,由 xxd -p -c 1 < bin/getargv | sort | uniq -c 和 {{ 衡量1}}。

ls -l bin/getargv 说:

llvm-size --format=darwin bin/getargv

所以可执行文件在磁盘上是 Segment __PAGEZERO: 4294967296 Segment __TEXT: 16384 Section __text: 1220 Section __stubs: 78 Section __stub_helper: 146 Section __cstring: 41 Section __unwind_info: 96 total 1581 Segment __DATA_CONST: 16384 Section __got: 32 total 32 Segment __DATA: 16384 Section __la_symbol_ptr: 104 Section __data: 8 Section __bss: 8 total 120 Segment __LINKEDIT: 1072 total 4295017520 个字节(匹配 3*16384+1072=50224),但文件中只有 ls -l 个字节的数据 afaict(94% 为空,因此非常接近 96%上面,我假设数据/等中有一些填充和空字节)。

这好像一定有​​办法减小文件大小,但是strip命令对大小没有影响。

有没有办法减少段大小?或者更好地剥离可执行文件

[编辑]

1581+32+120+1072=2805

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?