This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294NCPDT: tiobj2bin fails on linux with libcrypt problem

Part Number: TM4C1294NCPDT

On Code Compose 10.4 and 11.0, running on Ubuntu 20.04, tiobj2bin fails on mkhex4bin, with a complaint as follows: "..... mkhex4bin: error while loading shared libraries: libcrypt.so.1: wrong ELF class: ELFCLASS64"

I have an older machine on which the build works, so I'm fine for now, but I will say that tiobj2bin has always seemed like a really messy way of handling the very common development requirement of creating a loadable binary file; every time I move to a new machine I end up hard-coding paths, copying binaries around, and otherwise fussing about something that should just work.  Yes, I've seen the cheerful posts about post processing steps; unfortunately, they don't really work. 

Are there copyright or other IP issues preventing this from being rolled into the main build tools?

And next: this UI appears to force entry into the processor forum.  It's not a Tiva issue; it's a code composer problem.

  • "..... mkhex4bin: error while loading shared libraries: libcrypt.so.1: wrong ELF class: ELFCLASS64"

    Looking on a CCS 11.1 installation under Ubuntu 18.04.6 LTS system can see that mkhex4bin is a 32-bit executuble:

    $ file /home/mr_halfword/ti/ccs1110/ccs/utils/tiobj2bin/mkhex4bin
    /home/mr_halfword/ti/ccs1110/ccs/utils/tiobj2bin/mkhex4bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, stripped
    Which has dependencies on several 32-bit (i386) dynamic libraries:

    $ ldd /home/mr_halfword/ti/ccs1110/ccs/utils/tiobj2bin/mkhex4bin
    	linux-gate.so.1 (0xf7fa8000)
    	libnsl.so.1 => /lib/i386-linux-gnu/libnsl.so.1 (0xf7f61000)
    	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7f5c000)
    	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7e5a000)
    	libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7e28000)
    	libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xf7e24000)
    	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c48000)
    	/lib/ld-linux.so.2 (0xf7faa000)

    The CCS 11 Ubuntu 20.04 LTS host support mentions the need to install libc6:i386 as a dependent library.

    Checking on my Ubuntu 18.04.6 LTS system all the dynamic libraries mkhex4bin are from libc6:i386 :

    $ dpkg -S /lib/i386-linux-gnu/libnsl.so.1 /lib/i386-linux-gnu/libdl.so.2 /lib/i386-linux-gnu/libm.so.6 /lib/i386-linux-gnu/libcrypt.so.1 /lib/i386-linux-gnu/libutil.so.1 /lib/i386-linux-gnu/libc.so.6
    libc6:i386: /lib/i386-linux-gnu/libnsl.so.1
    libc6:i386: /lib/i386-linux-gnu/libdl.so.2
    libc6:i386: /lib/i386-linux-gnu/libm.so.6
    libc6:i386: /lib/i386-linux-gnu/libcrypt.so.1
    libc6:i386: /lib/i386-linux-gnu/libutil.so.1
    libc6:i386: /lib/i386-linux-gnu/libc.so.6
    Therefore, I think if you install libc6:i386 on Ubuntu 20.04 it should fix the "libcrypt.so.1: wrong ELF class: ELFCLASS64" error.

  • Robert,

    Did Chester's suggestion work for you?

    Regards,

    John

  • Chester:

    Thanks, that did it!

    -- Bob