ubuntu 22.04 - arm-none-eabi GDB 抱怨缺少库

ubuntu 22.04 - arm-none-eabi GDB 抱怨缺少库

尝试让 arm 工具链在我新安装的 ubuntu 22.04 上运行。修复一些符号链接后,libncurses现在它抱怨缺少一些 python3.6 的共享库。

我确信对于普通的 ubuntu 用户来说,这是一个很容易修复的问题。我不是那种人。我已经通过删除并重新安装 python3 破坏了一个 ubuntu 安装。因此重新安装了所有内容,并准备进行第二次尝试

当我尝试运行gdb客户端时出现错误消息:

bp@bp-legion:~/Downloads/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin$ ./arm-none-eabi-gdb --version

./arm-none-eabi-gdb: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

我的磁盘上有这个共享库:

/snap/gnome-3-28-1804/161/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0

我尝试将该库符号链接到 /usr/lib,但它抱怨

bp@bp-legion:~/Downloads/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin$ sudo ln -s -f /snap/gnome-3-28-1804/161/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0 /usr/lib/libpython3.6m.so.1.0
[sudo] password for bp: 
bp@bp-legion:~/Downloads/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin$ ./arm-none-eabi-gdb --version
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f2017abfc00 (most recent call first):
Aborted (core dumped)

此时我上次重新安装了 python3,导致我的 ubuntu 安装被破坏了。

有人可以告诉我如何让最新的(11.20)arm 工具链在 ubuntu 22.04 上运行吗?

答案1

  1. 从以下网址下载并提取 Python 3.6.15 源代码Python 网站

  2. 准备必要的依赖项

    sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \ libgdbm-dev libnss3-dev libedit-dev libc6-dev

  3. 从解压的文件夹执行:

    sudo ./configure --enable-optimizations -with-lto --enable-shared
    sudo make sharedinstall
    sudo ln -s /usr/local/lib/libpython3.6m.so.1.0 /usr/lib/x86_64-linux-gnu

答案2

您需要按照@Artem Maslov 在他之前的回答中建议的步骤进行操作,或者此处描述的步骤然后链接PYTHONPATH到解压的 Python-3.x 文件夹的 Lib 文件夹。在构建下载的 Python-3.x 文件之前,请确保找到适合您版本的正确依赖项。

就我而言(我的 GDB 需要 Python 3.8),设置的命令PYTHONPATH如下:

export PYTHONPATH=/usr/share/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi/dependencies/Python-3.8.14/Lib

然后打

arm-none-eabi-gdb --version

如果安装顺利的话,GDB 就可以工作了。

祝你好运!!

答案3

您可以gdb-multiarcharm-none-eabi-gdbUbuntu22.04上使用。

sudo apt install -y gdb-multiarch
sudo ln -s /usr/bin/gdb-multiarch /usr/bin/arm-none-eabi-gdb
arm-none-eabi-gdb --version
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

参考:如何在 Ubuntu 18.04(Bionic Beaver)上安装“gdb-arm-none-eabi”?

相关内容