根据GCC 的 ARM 选项页面;
告诉编译器通过首先将函数的地址加载到寄存器中然后在该寄存器上执行子例程调用来执行函数调用。如果目标函数位于基于偏移量版本的子程序调用指令的 64 兆字节寻址范围之外,则需要此开关。
基本上,这意味着如果您的二进制文件很小,您可能永远不会遇到运行默认值的问题,-mno-long-calls
而不必担心该选项。
如果链接器给你错误Relocation truncated to fit: R_ARM_PC24
,你已经达到了默认值的限制,需要使用.-mlong-calls