最近开发新的产品,需要5.10.x的内核来支撑新的需求,在编译的时候出现下面的错误无法完成内核的编译:

arch/arm/vfp/vfphw.o: in function `vfp_support_entry':(.text+0xa): relocation truncated to fit: R_ARM_THM_JUMP19 against symbol `vfp_kmode_exception' defined in .text.unlikely section in arch/arm/vfp/vfpmodule.o

最终在linux内核官方patchwork找到了对应的BUG描述以及解决方法:

点击这里

根据官方的说法,是因为vfphw.o内部调用了函数vfp_support_entryvfp_support_entry内部又调用了函数vfp_kmode_exception,vfp_kmode_exception所在的地址使用THUMB2指令集是跳转不过去的---因为THUMB2指令能使用的立即数范围比较小。

方法1 直接在内核中禁止THUMB2指令集:
在xxx_defconfig中注释掉:#CONFIG_THUMB2_KERNEL=y
重新编译即可

方法2 在文件 /arch/arm/vfp/vfphw.S汇编文件中加入红色那一行的代码,如下所示:
同时在内核中正常使能THUMB2指令集:
在xxx_defconfig中加入:CONFIG_THUMB2_KERNEL=y

ENTRY(vfp_support_entry)
     ldr    r3, [sp, #S_PSR]    @ Neither lazy restore nor FP exceptions
     and    r3, r3, #MODE_MASK    @ are supported in kernel mode
     teq    r3, #USR_MODE
THUMB( it ne )
     bne    vfp_kmode_exception    @ Returns through lr
 
     VFPFMRX    r1, FPEXC        @ Is the VFP enabled?

重新编译即可

两种方法编译都可以正常通过且正常运行
区别体现在方法1所编译的内核要比方法2所编译的内核大200KB左右,因为THUMB2指令集的作用就是在性能损失极小的情况下大幅度增加指令密度,根据官方的说法,THUMB2指令集比ARM指令集的指令密度高30%的同时能达到ARM指令集性能的98%

kernel编译错误R_ARM_THM_JUMP19相关推荐

  1. Hi3519V101 Uboot和Kernel编译

    Hi3519V101 Uboot和Kernel编译 前面已经搭建好了Ubuntu下的海思开发环境,现在对编译Uboot和Kernel的过程做一个简单的记录.参考文档<Hi3519V101 U-b ...

  2. php.h not found,编译错误“fatal error: 'xxxx.h' file not found” 如何解决

    我们可能经常会出现编译错误的问题,本文作者也是在编译一个开源程序时遇到错误,然后整理出来,后面还带了一个在Mac OS X 上编译 Android 时的一个错误解决方法. 编译一个开源项目时遇到这样一 ...

  3. Android源码kernel编译

    Android 源码由 Google 管理,下载源码之前请先明确自己下载源码的目的,总结下,总共有如下几种: 阅读,查阅: 编译调测制作对应手机 root 包: 编译定制对应手机 ROM: 其中第2, ...

  4. (随时增加)linux编译错误集锦

    1.Error: Invalid function arguments provided. 错误原因:传递参数过程有错误 解决办法: a.走读代码,或者gdb调试,加打印,分析打印出现前后文的代码接口 ...

  5. java telephony jar_编译错误解决方法

    首页板块列表刷机技术阅读帖子 编译错误解决方法 发布时间:2015-05-19 18:153回复.2072阅读 前言:关于Android4.4/CM11编译中遇到的一些错误,本人进行了整理.有需要的童 ...

  6. nVIDIA Jetson TX1 内核kernel编译

    一.准备工作 1.在官网下载最新的kernel源代码: https://developer.nvidia.com/embedded/downloads#?tx=$software,l4t-tx1 2. ...

  7. Jetson TX1内核kernel编译与烧写

    Data: 2017.09.13 Author: cjh Theme: Jetson TX1内核kernel编译与烧写 PS   :本人用的JetPack版本为3.0 1.      Getting ...

  8. RV1126 SDK编译错误及解决记录

    RV1126 SDK编译错误及解决记录 1:错误: you need to install 'unbuffer' (from package expect or expect-dev) log sav ...

  9. 编译linux内核的错误,linux内核编译错误

    原标题:linux内核编译错误 内核版本:2.6.14 交叉编译器: -linux-gcc 4.3.3 错误: arch/arm/mm/alignment.c: In function 'proc_a ...

  10. vc 6.0常见编译错误及改正方法

    最常见VC++6.0编译错误信息集合 1.fatal error C1010: unexpected end of file while looking for precompiled header ...

最新文章

  1. Tesseract-OCR 3.04在Windows7 vs2013上编译过程
  2. Citrix VDI实战攻略之五:vDisk配置
  3. 黑马程序员_java之集合框架
  4. MySQL高级 大批量插入数据
  5. 在WildFly的REST Web服务中与Jackson的双向关系
  6. Oracle 中启用 scott 用户 的方法
  7. js显示PHP源代码命令,layedit富文本编辑器中如何添加显示源码功能(代码)
  8. ubuntu 安装java_Hadoop3.1.3安装教程_单机/伪分布式配置
  9. ue4 迁移模型_UE4虚幻引擎学习云笔记(六)-关卡设计入门-[5.地形快速入门]
  10. Android 架构优化~MVP 架构改造
  11. Ubuntu 14.04安装和卸载搜狗拼音输入法
  12. 任务 F :工时统计
  13. 7款Java反编译工具
  14. 11.30上海交大PMP试题每日一题
  15. Tomcat下载安装配置教程
  16. 《21天学通C语言(第7版)》一6.4 小 结
  17. windows域用户切换本地用户
  18. 与虎谋皮,饮鸩止渴,却有什么办法呢?
  19. 关于一些数据集的下载链接
  20. 【计算机网络】,java基础教程从入门到精通

热门文章

  1. Photoshop2021入门教程|认识Photoshop界面
  2. 3D打印技术助力传感器:制造出堪比鹰眼视野的摄像头
  3. 三星S5P6818工控底板 (ARM Cortex-A53架构)
  4. 电影O2O烧钱大战,百度成收割者?
  5. android 9指纹认证_Android指纹认证教程
  6. Proxifier实现指定进程代理IP 雷电模拟器为例
  7. html将数据永久保存起来,数据保存(永久保存)方式(示例代码)
  8. js 浏览器永久保存数据:localStorage
  9. C++中++cnt1[s1[i]-‘a‘]的意思
  10. MOS在锂电池的核心原理