登录
首页 >  Golang >  Go问答

ELF二进制文件默认采用字节对齐

来源:stackoverflow

时间:2024-02-10 19:00:19 308浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《ELF二进制文件默认采用字节对齐》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

根据经验,我发现go elf 二进制文件使用16 字节对齐。例如:

$ wget https://github.com/gardener/gardenctl/releases/download/v0.24.2/gardenctl-linux-amd64
$ readelf -W -s gardenctl-linux-amd64 | grep -E "FUNC" | wc -l
44746
$ readelf -W -s gardenctl-linux-amd64 | grep -E "0[ ]+[0-9]* FUNC" | wc -l
44744

所以绝大多数的最低有效字节都是 0。它总是就像go二进制文件中那样吗?


正确答案


这取决于平台。如果您签出了源代码库:

% cd go/src/cmd/link/internal
% grep "funcAlign =" */*.go
amd64/l.go:     funcAlign = 32
arm/l.go:       funcAlign = 4 // single-instruction alignment
arm64/l.go:     funcAlign = 16
mips64/l.go:    funcAlign = 8
ppc64/l.go:     funcAlign = 16
riscv64/l.go:   funcAlign = 8
s390x/l.go:     funcAlign = 16
x86/l.go:       funcAlign = 16

未来 amd64 的对齐方式可能会回落到 16;暂时是32,因为https://github.com/golang/go/issues/35881

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>