【问题标题】:GNU linker LENGTH section multiplication factorGNU 链接器 LENGTH 部分乘法因子
【发布时间】:2022-03-30 18:39:55
【问题描述】:

链接器文件中内存命令的长度部分用 K、M 符号表示千字节、兆字节等。乘数是 1000 还是 1024?

【问题讨论】:

    标签: linker gnu ld linker-scripts


    【解决方案1】:

    我知道这是几个月后的事了,但我自己也想知道 K 和 M 部分。

    LD 手册规定表达式“必须仅为数字并计算为常数”。然后它愉快地继续使用 256K 和 4M 的示例,这有点令人不安!

    相关的源代码文件(在 binutils/ld 中)似乎是 ldlex.l 和 ldgram.y。在词法分析器中,表达式可以以 [M|K|m|k] 结尾。

    对于 M 或 m,该值乘以 1024 * 1024。
    对于 K 或 k,该值乘以 1024。

    编辑:我已经单独阅读了 LD 手册的部分内容,这可能会产生误导!当我阅读更多链接器手册时,我可以看到它确实指定了数字常量的含义,其中确实包括 K 和 M 之类的后缀: https://sourceware.org/binutils/docs/ld/Constants.html#Constants

    【讨论】:

    • 谢谢!我根据您的回答导航到源,它是正确的:sourceware.org/git/?p=binutils-gdb.git;a=blob_plain;f=ld/…
    • 我应该包含链接而不是让你在那里工作!不过有趣的是 - 我回答了这个问题,因为我没有阅读所有手册,想知道关于 K 和 M 的同样事情,然后用谷歌回答你的问题!但是当我阅读更多手册时,它确实阐明了常量的含义。我对我的答案添加了一个编辑:-)
    • 对于这个答案只有一件事要说...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 2013-10-26
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2021-10-10
    • 2017-04-18
    • 2011-05-28
    相关资源
    最近更新 更多