{"id":373,"date":"2024-06-20T00:25:42","date_gmt":"2024-06-19T21:25:42","guid":{"rendered":"https:\/\/me.unna.me\/?p=373"},"modified":"2024-06-20T00:25:43","modified_gmt":"2024-06-19T21:25:43","slug":"arm-none-eabi-gdb-and-python-3-8-issue","status":"publish","type":"post","link":"https:\/\/me.unna.me\/?p=373","title":{"rendered":"arm-none-eabi-gdb and Python 3.8 issue"},"content":{"rendered":"\n<p>Not a long time ago, I&#8217;ve updated my home computer with fresh Xubintu 24.04 LTS, so I need to reinstall\/resetup my develop enviroment for STM32<\/p>\n\n\n\n<p>If you had an experience with installation of ARM GNU Toolchain on Linux, I guess you also had a painfull experience with ancient and non-working installation instruction for Linux provided by ARM. In general, installtion procedure is quite simple: just unpack an archive, than add &#171;bin&#187; directory into PATH variable. <\/p>\n\n\n\n<p>But! The main issue is a GDB binary with python-based TUI (terminal user interface). It is linked with the old Python 3.8 library, and legacy (plus removed in fresh distros) libncurses5 library.<\/p>\n\n\n\n<p>On the previous Xubuntu 22.04, I&#8217;ve used a <a href=\"https:\/\/www.linuxcapable.com\/install-python-3-8-on-ubuntu-linux\/\">solution<\/a> with a custom repository, but for the current  Xubintu 24.04 Python 3.8 doesn&#8217;t exist, and libncurses5 package has been removed from repositories. How can we solve this problem?<\/p>\n\n\n\n<p>After a litte search, I&#8217;ve found a suitable solution on <a href=\"https:\/\/stackoverflow.com\/questions\/72187185\/arm-none-eabi-gdb-cannot-start-because-of-some-python-error\">StackOverflow<\/a>. Just build your own GDB with actual Python for you system! It is quite simple!<\/p>\n\n\n\n<p>I&#8217;ve checked this instruction, and did a small change in the tutorial: replaced final &#171;make install&#187;  command on a deb-file generation, because simple &#171;make install&#187; just copies compiled binary and other files into your system directories without any control. Please, DON&#8217;T DO IT on modern repository-based Linux systems! All software MUST BE installed using a system package manger. <\/p>\n\n\n\n<p>OK. Let&#8217;s installation begin!  I&#8217;m going to do all my action in &#171;\/storage\/Temp&#187; directory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Part I. GDB compilation<\/h2>\n\n\n\n<p>At first, let&#8217;s install all required packages for a compilation <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ sudo apt-get install -y build-essential libz-dev libexpat1-dev libncurses-dev libgmp-dev libmpfr-dev libisl-dev libreadline-dev libpython3-dev texinfo texlive<\/code><\/pre>\n\n\n\n<p>Then, fetch fresh sources for GDB<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ wget https:\/\/ftp.gnu.org\/gnu\/gdb\/gdb-14.2.tar.xz<\/code><\/pre>\n\n\n\n<p>Unpack it<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ tar Jxf gdb-14.2.tar.xz<\/code><\/pre>\n\n\n\n<p>Create a directory for compilation<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ mkdir gdb-build<\/code><\/pre>\n\n\n\n<p>And the directories for a future package&#8217;s tree<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ mkdir arm-none-eabi-gdb<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ mkdir arm-none-eabi-gdb\/usr<\/code><\/pre>\n\n\n\n<p>Move to the build directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ cd gdb-build<\/code><\/pre>\n\n\n\n<p>And run pre-configuration. Please mention &#171;&#8212;prefix&#187; option. It points on our &#171;package&#8217;s tree&#187; dir <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ ..\/gdb-14.2\/configure --with-expat --target=arm-none-eabi --program-prefix=arm-none-eabi- --with-source-highlight --with-python=$(which python3) --enable-tui --prefix=\/storage\/Temp\/arm-none-eabi-gdb\/usr<\/code><\/pre>\n\n\n\n<p>Run compilation process<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ make -j8 all<\/code><\/pre>\n\n\n\n<p>And finally, make an &#171;installation&#187;<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ make install<\/code><\/pre>\n\n\n\n<p>Well, let&#8217;s check what we have in our installation dir<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ cd \/storage\/Temp\/arm-none-eabi-gdb\/usr\/bin\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ ls\n\narm-none-eabi-gdb  arm-none-eabi-gdb-add-index  arm-none-eabi-run<\/code><\/pre>\n\n\n\n<p>Great! We have &#171;arm-none-eabi-gdb&#187; binary. But we have to check, which kind of libraries linked to our binary. <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ ldd arm-none-eabi-gdb\n\n\tlinux-vdso.so.1 (0x00007ffff49cd000)\n\tlibncursesw.so.6 => \/lib\/x86_64-linux-gnu\/libncursesw.so.6 (0x0000796ab03c4000)\n\tlibtinfo.so.6 => \/lib\/x86_64-linux-gnu\/libtinfo.so.6 (0x0000796ab0390000)\n\tlibpython3.12.so.1.0 => \/lib\/x86_64-linux-gnu\/libpython3.12.so.1.0 (0x0000796aafa00000)\n\tlibexpat.so.1 => \/lib\/x86_64-linux-gnu\/libexpat.so.1 (0x0000796ab0365000)\n\tlibmpfr.so.6 => \/lib\/x86_64-linux-gnu\/libmpfr.so.6 (0x0000796ab02aa000)\n\tlibgmp.so.10 => \/lib\/x86_64-linux-gnu\/libgmp.so.10 (0x0000796aaf97c000)\n\tlibstdc++.so.6 => \/lib\/x86_64-linux-gnu\/libstdc++.so.6 (0x0000796aaf600000)\n\tlibm.so.6 => \/lib\/x86_64-linux-gnu\/libm.so.6 (0x0000796aaf893000)\n\tlibgcc_s.so.1 => \/lib\/x86_64-linux-gnu\/libgcc_s.so.1 (0x0000796aaf5d3000)\n\tlibc.so.6 => \/lib\/x86_64-linux-gnu\/libc.so.6 (0x0000796aaf200000)\n\tlibz.so.1 => \/lib\/x86_64-linux-gnu\/libz.so.1 (0x0000796aaf5b7000)\n\t\/lib64\/ld-linux-x86-64.so.2 (0x0000796ab0e0e000)\n<\/code><\/pre>\n\n\n\n<p>Success! Our custom GDB binary linked with the fresh system Python, and libncurses libraries! Save this command output, it will be usefull for future steps.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Part II. Build custom &#171;deb&#187; package file<\/h2>\n\n\n\n<p> Now we can <a href=\"https:\/\/www.baeldung.com\/linux\/create-debian-package\">build<\/a> our custom &#171;deb&#187; package for the installation. <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ cd \/storage\/Temp\/arm-none-eabi-gdb\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ mkdir DEBIAN &amp;&amp; cd DEBIAN<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ nano control<\/code><\/pre>\n\n\n\n<p>Add follwing text into &#171;control&#187; file<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Package: arm-none-eabi-gdb\nVersion: 4.12\nMaintainer: Igor Volodin\nArchitecture: amd64\nDepends: libc6, zlib1g, libgcc-s1, libstdc++6, libgmp10, libmpfr6, libexpat1, libpython3-stdlib, libtinfo6, libncurses6, libncursesw6          \nDescription: GDB for ARM with Python TUI<\/pre>\n\n\n\n<p>Also, I have to mention, how to collect a list of packages for the &#171;Depends&#187; option. Look at the output of &#171;ldd&#187; command. It contains list of required shared libraries. Just get the library name from the output (for example, I will use &#171;libexpat&#187;), and find similar in the installed packages.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ dpkg -l | grep libexpat\n\nii  libexpat1:amd64                                2.6.1-2build1                             amd64        XML parsing C library - runtime library\nii  libexpat1-dev:amd64                            2.6.1-2build1                             amd64        XML parsing C library - development kit\n<\/code><\/pre>\n\n\n\n<p>OK, we have &#171;libexpat1&#187; and &#171;libexpat1-dev&#187;. The second is just for compilation from sources, and not needed for the our binary package. Re-check our choice, by listing all files, related to the &#171;libexpat1&#187; package. Yes, it includes \/usr\/lib\/x86_64-linux-gnu\/libexpat.so.1 file, so we can add &#171;libexpat1&#187; into &#171;Depends&#187; section.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ dpkg -L libexpat1\n\n\/.\n\/usr\n\/usr\/lib\n\/usr\/lib\/x86_64-linux-gnu\n\/usr\/lib\/x86_64-linux-gnu\/libexpat.so.1.9.1\n\/usr\/lib\/x86_64-linux-gnu\/libexpatw.so.1.9.1\n\/usr\/share\n\/usr\/share\/doc\n\/usr\/share\/doc\/libexpat1\n\/usr\/share\/doc\/libexpat1\/AUTHORS\n\/usr\/share\/doc\/libexpat1\/changelog.Debian.gz\n\/usr\/share\/doc\/libexpat1\/copyright\n\/usr\/lib\/x86_64-linux-gnu\/libexpat.so.1\n\/usr\/lib\/x86_64-linux-gnu\/libexpatw.so.1\n<\/code><\/pre>\n\n\n\n<p>Right now we have a &#171;package installation tree&#187; in &#171;\/storage\/Temp\/arm-none-eabi-gdb&#187; directory. And on this step, better to check, have we intersections with already installed files in our system, or not. Our package tree has &#171;gdb&#187; directory in  \/storage\/Temp\/arm-none-eabi-gdb\/usr\/share\/. And it contains something. <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ ls \/storage\/Temp\/arm-none-eabi-gdb\/usr\/share\/gdb\n\npython  syscalls  system-gdbinit\n<\/code><\/pre>\n\n\n\n<p>But our current system directory also has same directory and files in \/usr\/share\/!<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$  ls \/usr\/share\/gdb\/\n\nauto-load  python  syscalls  system-gdbinit<\/code><\/pre>\n\n\n\n<p>Unfortunallty, I don&#8217;t know, how package mainteiner have to resolve similar issues. I&#8217;ve removed confilcting directories and files form &#171;package installation tree&#187;<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ rm -rf \/storage\/Temp\/arm-none-eabi-gdb\/usr\/share\/gdb \/storage\/Temp\/arm-none-eabi-gdb\/usr\/include\/gdb<\/code><\/pre>\n\n\n\n<p>Well, it is time to build the package. Move to the top directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ cd \/storage\/Temp\/<\/code><\/pre>\n\n\n\n<p>And build the package<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ dpkg-deb --build arm-none-eabi-gdb\n\ndpkg-deb: building package 'arm-none-eabi-gdb' in 'arm-none-eabi-gdb.deb'.<\/code><\/pre>\n\n\n\n<p>Recheck what the package contains<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ dpkg -c arm-none-eabi-gdb.deb\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:25 .\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/bin\/\n-rwxr-xr-x igor\/igor 163716584 2024-06-19 21:16 .\/usr\/bin\/arm-none-eabi-gdb\n-rwxr-xr-x igor\/igor      4627 2024-06-19 21:16 .\/usr\/bin\/arm-none-eabi-gdb-add-index\n-rwxr-xr-x igor\/igor   8545496 2024-06-19 21:16 .\/usr\/bin\/arm-none-eabi-run\ndrwxrwxr-x igor\/igor         0 2024-06-19 23:19 .\/usr\/include\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/include\/sim\/\n-rw-r--r-- igor\/igor     12471 2024-06-19 21:16 .\/usr\/include\/sim\/callback.h\n-rw-r--r-- igor\/igor      9969 2024-06-19 21:16 .\/usr\/include\/sim\/sim.h\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/lib\/\n-rw-r--r-- igor\/igor   9277172 2024-06-19 21:16 .\/usr\/lib\/libarm-none-eabi-sim.a\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:46 .\/usr\/share\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/doc\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/doc\/arm\/\n-rw-r--r-- igor\/igor       779 2024-06-19 21:16 .\/usr\/share\/doc\/arm\/README\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/info\/\n-rw-r--r-- igor\/igor     48920 2024-06-19 21:16 .\/usr\/share\/info\/annotate.info\n-rw-r--r-- igor\/igor    698473 2024-06-19 21:16 .\/usr\/share\/info\/bfd.info\n-rw-r--r-- igor\/igor     90873 2024-06-19 21:16 .\/usr\/share\/info\/ctf-spec.info\n-rw-rw-r-- igor\/igor       990 2024-06-19 21:16 .\/usr\/share\/info\/dir\n-rw-r--r-- igor\/igor     29050 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info\n-rw-r--r-- igor\/igor    301325 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-1\n-rw-r--r-- igor\/igor    300368 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-2\n-rw-r--r-- igor\/igor    302491 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-3\n-rw-r--r-- igor\/igor    308967 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-4\n-rw-r--r-- igor\/igor    287286 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-5\n-rw-r--r-- igor\/igor    299564 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-6\n-rw-r--r-- igor\/igor    302126 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-7\n-rw-r--r-- igor\/igor    384849 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-8\n-rw-r--r-- igor\/igor    249330 2024-06-19 21:16 .\/usr\/share\/info\/gdb.info-9\n-rw-r--r-- igor\/igor     29825 2024-06-19 21:16 .\/usr\/share\/info\/sframe-spec.info\n-rw-r--r-- igor\/igor    184719 2024-06-19 21:16 .\/usr\/share\/info\/stabs.info\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/da\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/da\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    153602 2024-06-19 21:16 .\/usr\/share\/locale\/da\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     17551 2024-06-19 21:16 .\/usr\/share\/locale\/da\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/de\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/de\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     54340 2024-06-19 21:16 .\/usr\/share\/locale\/de\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/es\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/es\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    208584 2024-06-19 21:16 .\/usr\/share\/locale\/es\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     39868 2024-06-19 21:16 .\/usr\/share\/locale\/es\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/fi\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/fi\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    162673 2024-06-19 21:16 .\/usr\/share\/locale\/fi\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     31220 2024-06-19 21:16 .\/usr\/share\/locale\/fi\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/fr\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/fr\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    239357 2024-06-19 21:16 .\/usr\/share\/locale\/fr\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     57025 2024-06-19 21:16 .\/usr\/share\/locale\/fr\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ga\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ga\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     30700 2024-06-19 21:16 .\/usr\/share\/locale\/ga\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/hr\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/hr\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor      5144 2024-06-19 21:16 .\/usr\/share\/locale\/hr\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/id\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/id\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    144237 2024-06-19 21:16 .\/usr\/share\/locale\/id\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     30272 2024-06-19 21:16 .\/usr\/share\/locale\/id\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/it\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/it\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     26349 2024-06-19 21:16 .\/usr\/share\/locale\/it\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ja\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ja\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    134646 2024-06-19 21:16 .\/usr\/share\/locale\/ja\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ka\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ka\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor      4993 2024-06-19 21:16 .\/usr\/share\/locale\/ka\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/nl\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/nl\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     25259 2024-06-19 21:16 .\/usr\/share\/locale\/nl\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/pt\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/pt\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    218318 2024-06-19 21:16 .\/usr\/share\/locale\/pt\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/pt_BR\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/pt_BR\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     56398 2024-06-19 21:16 .\/usr\/share\/locale\/pt_BR\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ro\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ro\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    238628 2024-06-19 21:16 .\/usr\/share\/locale\/ro\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     56150 2024-06-19 21:16 .\/usr\/share\/locale\/ro\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ru\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/ru\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    292997 2024-06-19 21:16 .\/usr\/share\/locale\/ru\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/rw\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/rw\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor       388 2024-06-19 21:16 .\/usr\/share\/locale\/rw\/LC_MESSAGES\/bfd.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/sr\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/sr\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    292730 2024-06-19 21:16 .\/usr\/share\/locale\/sr\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     67410 2024-06-19 21:16 .\/usr\/share\/locale\/sr\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/sv\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/sv\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    155219 2024-06-19 21:16 .\/usr\/share\/locale\/sv\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     55522 2024-06-19 21:16 .\/usr\/share\/locale\/sv\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/tr\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/tr\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     69552 2024-06-19 21:16 .\/usr\/share\/locale\/tr\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     16117 2024-06-19 21:16 .\/usr\/share\/locale\/tr\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/uk\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/uk\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    299719 2024-06-19 21:16 .\/usr\/share\/locale\/uk\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     70903 2024-06-19 21:16 .\/usr\/share\/locale\/uk\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/vi\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/vi\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor    160341 2024-06-19 21:16 .\/usr\/share\/locale\/vi\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     33633 2024-06-19 21:16 .\/usr\/share\/locale\/vi\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/zh_CN\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/locale\/zh_CN\/LC_MESSAGES\/\n-rw-r--r-- igor\/igor     17866 2024-06-19 21:16 .\/usr\/share\/locale\/zh_CN\/LC_MESSAGES\/bfd.mo\n-rw-r--r-- igor\/igor     20533 2024-06-19 21:16 .\/usr\/share\/locale\/zh_CN\/LC_MESSAGES\/opcodes.mo\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/man\/\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/man\/man1\/\n-rw-r--r-- igor\/igor      6536 2024-06-19 21:16 .\/usr\/share\/man\/man1\/arm-none-eabi-gdb-add-index.1\n-rw-r--r-- igor\/igor     16840 2024-06-19 21:16 .\/usr\/share\/man\/man1\/arm-none-eabi-gdb.1\n-rw-r--r-- igor\/igor     14121 2024-06-19 21:16 .\/usr\/share\/man\/man1\/arm-none-eabi-gdbserver.1\ndrwxrwxr-x igor\/igor         0 2024-06-19 21:16 .\/usr\/share\/man\/man5\/\n-rw-r--r-- igor\/igor      7873 2024-06-19 21:16 .\/usr\/share\/man\/man5\/arm-none-eabi-gdbinit.5\n<\/code><\/pre>\n\n\n\n<p>Now, we can install it using dpkg<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ sudo dpkg -i arm-none-eabi-gdb.deb<\/code><\/pre>\n\n\n\n<p>Check it<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>$ sudo dpkg -l | grep arm-none\nii  arm-none-eabi-gdb  4.12     amd64        GDB for ARM with Python TUI\n\n$ which arm-none-eabi-gdb\n\n\/usr\/bin\/arm-none-eabi-gdb\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, I&#8217;m going to show, how to fix an issue with  arm-none-eabi-gdb from ARM GNU Toolchain, and old Python 3.8 or Python 3.6 dependencies <\/p>\n","protected":false},"author":1,"featured_media":375,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2],"tags":[13,15,14],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium<\/title>\n<meta name=\"description\" content=\"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let&#039;s fix it!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/me.unna.me\/?p=373\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium\" \/>\n<meta name=\"twitter:description\" content=\"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let&#039;s fix it!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/i0.wp.com\/me.unna.me\/wp-content\/uploads\/2024\/06\/arm-gdb-python.png?fit=400%2C100&ssl=1\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/me.unna.me\/?p=373\",\"url\":\"https:\/\/me.unna.me\/?p=373\",\"name\":\"arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium\",\"isPartOf\":{\"@id\":\"https:\/\/me.unna.me\/#website\"},\"datePublished\":\"2024-06-19T21:25:42+00:00\",\"dateModified\":\"2024-06-19T21:25:43+00:00\",\"author\":{\"@id\":\"https:\/\/me.unna.me\/#\/schema\/person\/6142f83a7613df7bf888961fa0d609fb\"},\"description\":\"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let's fix it!\",\"breadcrumb\":{\"@id\":\"https:\/\/me.unna.me\/?p=373#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/me.unna.me\/?p=373\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/me.unna.me\/?p=373#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/me.unna.me\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"arm-none-eabi-gdb and Python 3.8 issue\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/me.unna.me\/#website\",\"url\":\"https:\/\/me.unna.me\/\",\"name\":\"Digital Delirium\",\"description\":\"\u041b\u0435\u043d\u0442\u044f\u0439 \u0441 \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a\u043e\u043c aka R3TIM\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/me.unna.me\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/me.unna.me\/#\/schema\/person\/6142f83a7613df7bf888961fa0d609fb\",\"name\":\"Igor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/me.unna.me\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bae95594f546856805c59da005d5da6d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bae95594f546856805c59da005d5da6d?s=96&d=mm&r=g\",\"caption\":\"Igor\"},\"url\":\"https:\/\/me.unna.me\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium","description":"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let's fix it!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/me.unna.me\/?p=373","twitter_card":"summary_large_image","twitter_title":"arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium","twitter_description":"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let's fix it!","twitter_image":"https:\/\/i0.wp.com\/me.unna.me\/wp-content\/uploads\/2024\/06\/arm-gdb-python.png?fit=400%2C100&ssl=1","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/me.unna.me\/?p=373","url":"https:\/\/me.unna.me\/?p=373","name":"arm-none-eabi-gdb and Python 3.8 issue - Digital Delirium","isPartOf":{"@id":"https:\/\/me.unna.me\/#website"},"datePublished":"2024-06-19T21:25:42+00:00","dateModified":"2024-06-19T21:25:43+00:00","author":{"@id":"https:\/\/me.unna.me\/#\/schema\/person\/6142f83a7613df7bf888961fa0d609fb"},"description":"Unfortunatly, arm-none-eabi-gdb has old Python3.8 and libncurses5. But they are missing or depecated on modern Linux distros. Let's fix it!","breadcrumb":{"@id":"https:\/\/me.unna.me\/?p=373#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/me.unna.me\/?p=373"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/me.unna.me\/?p=373#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/me.unna.me\/"},{"@type":"ListItem","position":2,"name":"arm-none-eabi-gdb and Python 3.8 issue"}]},{"@type":"WebSite","@id":"https:\/\/me.unna.me\/#website","url":"https:\/\/me.unna.me\/","name":"Digital Delirium","description":"\u041b\u0435\u043d\u0442\u044f\u0439 \u0441 \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a\u043e\u043c aka R3TIM","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/me.unna.me\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"},{"@type":"Person","@id":"https:\/\/me.unna.me\/#\/schema\/person\/6142f83a7613df7bf888961fa0d609fb","name":"Igor","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/me.unna.me\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bae95594f546856805c59da005d5da6d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bae95594f546856805c59da005d5da6d?s=96&d=mm&r=g","caption":"Igor"},"url":"https:\/\/me.unna.me\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/me.unna.me\/wp-content\/uploads\/2024\/06\/arm-gdb-python.png?fit=400%2C100&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9oabo-61","_links":{"self":[{"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/posts\/373"}],"collection":[{"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/me.unna.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=373"}],"version-history":[{"count":2,"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/posts\/373\/revisions"}],"predecessor-version":[{"id":376,"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/posts\/373\/revisions\/376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/me.unna.me\/index.php?rest_route=\/wp\/v2\/media\/375"}],"wp:attachment":[{"href":"https:\/\/me.unna.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/me.unna.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/me.unna.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}