Linker GNU连接器长度段乘法因子

Linker GNU连接器长度段乘法因子,linker,gnu,Linker,Gnu,链接器文件中内存命令的长度部分使用K,M符号表示千字节、兆字节等。乘数是1000还是1024?我知道这是几个月后的事,但我自己也在想K和M部分 LD手册规定,表达式必须仅为数值表达式,且计算结果必须为常数。然后,它愉快地继续使用一个256K和4M的例子,这有点令人不安 binutils/ld中的相关源代码文件似乎是ldlex.l和ldgram.y。在lexer中,表达式可以以[M | K | M | K]结尾 对于M或M,该值乘以1024*1024。 对于K或K,该值乘以1024 编辑:我已经单

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

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

LD手册规定,表达式必须仅为数值表达式,且计算结果必须为常数。然后,它愉快地继续使用一个256K和4M的例子,这有点令人不安

binutils/ld中的相关源代码文件似乎是ldlex.l和ldgram.y。在lexer中,表达式可以以[M | K | M | K]结尾

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

编辑:我已经单独阅读了LD手册的部分,这可能会产生误导!当我阅读更多的链接器手册时,我可以看到它确实指定了数字常量的含义,其中包括后缀K和M:

谢谢!我根据您的答案导航到源代码,这是正确的:我应该包含链接,而不是让您在那里做工作!有趣的是,我回答了这个问题,因为我没有读过所有的手册,对K和M也有同样的疑问,然后用谷歌来回答你的问题!!但当我读了更多的手册,它确实澄清了什么是常数。我在回答中添加了一个编辑:-