问题描述
我已经使用以下标志编译了我的项目: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 (将#修改为@)