loadlocale.c:130: _nl_intern_locale_data: failed已放弃 (核心已转储)]问题

ops/2024/10/18 12:27:30/

在进行交叉编译cortex-a9架构时,出现以上错误。

问题描述:

在使用 arm-none-linux-gnueabi-gdb 进行 Cortex-A9 架构交叉编译调试时,出现如下错误:

arm-none-linux-gnueabi-gdb: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
已放弃 (核心已转储)

此错误与 GDB 在加载语言区域(locale)数据时发生的断言失败有关,通常发生在跨平台交叉编译环境中,尤其是 GDB 版本较旧时。具体是 ` _nl_intern_locale_data` 函数的断言失败。

尝试搜索到的解决方法,但问题依然存在:

1. 设置语言环境为 C locale

强制将语言环境设置为 C 来避免区域数据加载错误:

export LC_ALL=C
export LANG=C
export LANGUAGE=C

然后重新运行 `arm-none-linux-gnueabi-gdb`。但该方法并未成功解决问题。

2. 检查和重装语言包

确认系统是否安装了必要的语言包。执行以下命令安装并配置语言包:

sudo apt-get install locales
sudo dpkg-reconfigure locales

尝试切换到 `C.UTF-8` 或 `en_US.UTF-8` 语言环境

但是问题依然存在。

最终解决方案:

使用 `gdb-multiarch` 替代 `arm-none-linux-gnueabi-gdb`

由于问题与旧版 GDB 的兼容性有关,升级到现代版本的多架构 GDB 解决了问题。以下是步骤:

  1. 安装 `gdb-multiarch`: 通过以下命令安装支持多架构的 GDB

    sudo apt-get update
    sudo apt-get install gdb-multiarch
  2. 确认安装版本: 安装完成后,通过以下命令检查版本:

    gdb-multiarch -v

    确认使用的是现代版本。

  3. 调试 first.elf 文件: 使用 `gdb-multiarch` 代替原有的 GDB 进行调试:

    gdb-multiarch first.elf

    该方法成功解决了由于老版本 GDB 造成的区域设置崩溃问题,并确保在 ARM 嵌入式平台上的调试环境更加稳定。


通过切换到 gdb-multiarch,解决了由于老版本 GDB 不兼容导致的断言失败问题,成功实现了对 Cortex-A9 架构的交叉调试。这是一个有效的解决方案,尤其适用于嵌入式系统的多架构调试场景。


http://www.ppmy.cn/ops/124583.html

相关文章

Java-基础

1. 导入模块不能纯粹的复制粘贴&#xff0c;要从new里导入&#xff0c;因为前者建立不了关联 2. 数组 String[] name{"张三","李四","王五"};int[] numsnew int[]{1,2,3};//二维String[][] names{{"张三","李四"},{"…

uniapp 游戏 - 使用 uniapp 实现的扫雷游戏

0. 思路 1. 效果图 2. 游戏规则 扫雷的规则很简单。盘面上有许多方格,方格中随机分布着一些雷。你的目标是避开雷,打开其他所有格子。一个非雷格中的数字表示其相邻 8 格子中的雷数,你可以利用这个信息推导出安全格和雷的位置。你可以用右键在你认为是雷的地方插旗(称为标…

SSL 协议(HTTPS 协议的关键)

所谓的协议 协议只是一种规则&#xff0c;你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则&#xff0c;任何人都可以定协议 我们不需要太了解细节&#xff0c;这些是制定和完善协议的人去做的&#xff0c;我们只需要知道协议的一个大概 一、SSL 协议 1、…

k8s apiserver高可用方案

目前官方推荐有 2 种方式部署k8s apiserver 高可用 keepalived and haproxy 部署有2种方式&#xff0c;一种是systemd管理的&#xff0c;另一种是pod形式&#xff0c;使用那种可以根据实际情况选择 服务部署 systemd方式 可以通过包管理工具安装&#xff0c;正常启动之后&…

python往excel中写端口信息

def readfiletoexcel():wb xlwt.Workbook()sheet wb.add_sheet(端口信息)#[Interface, PHY, Protocol, InUti, OutUti, inErrors, outErrors]sheet.write(0,0,Interface)sheet.write(0,1,PHY)sheet.write(0,2,Protocol)sheet.write(0,3,InUti)sheet.write(0,4,OutUti)sheet.w…

SpringBoot接口异常:Request header is too large

问题描述 在调用SpringBoot接口时&#xff0c;突然碰到 Request header is too large 这个异常&#xff0c;从异常信息可以看出是因为请求头大小超出了服务器允许的最大限制。 解决方法 既然是因为请求头大小超出了服务器允许的请求头最大限制&#xff0c;那么就可以通过修改…

【30天玩转python】自动化与脚本编写

自动化与脚本编写 Python 因其简洁的语法和强大的标准库&#xff0c;非常适合用于自动化任务和编写脚本。通过编写 Python 脚本&#xff0c;可以自动执行重复性工作、简化日常任务、批量处理文件和数据&#xff0c;甚至管理服务器等。本篇文章将介绍如何使用 Python 编写自动化…

中国剩余定理 C++

题目 解题思路 原链接&#xff1a;https://www.acwing.com/solution/content/3539/ 大致步骤&#xff1a; 将第2,3,4…n个方程不断与第一个方程合并&#xff0c;得到方程a1k1a2k2m2-m1;用扩展欧几里得算法解出a1k1a2k2gcd(a1, a2)的结果&#xff0c;再将结果扩大(m2-m1)/d倍即…