Relocation truncated to fit解决办法
通过上篇文章,大概知道了这种情况一般就是地址相关!
那么这次,要写的就是和跳转相关。这种情况一般出现在汇编代码中。有些跳转指令的跳转范围很小。而当要跳转到的地址超出了范围,那么就会报错!
对于x86:
最终的原因是使用参数-mcmodel=kernel,只能使用最高2G最低2G的内存空间,如果想使用更多的大内存空间,应该使用-mcmodel=large。
对于ppc:
mcmodel对于ppc并不适用,我们在网上搜索找到了-mlongcall参数,加入到base_cflags中。
这对于c源码文件很有效果。可是如果写在汇编里的跳转指令,则没法了。
这时候,也许我们应该想想是否可以改汇编。或者,把跳转指令后面跟的跳转地址放在跳转指令的跳转范围之内。
网友评论