Skip to main content
Associate III
October 24, 2024
Solved

usr/lib/libc.so: file not recognized: file format not recognized

  • October 24, 2024
  • 2 replies
  • 2926 views

Hello, I am working with the STM32MP257F-EV1 Development board and I am getting stuck. I am following the following guide: https://wiki.st.com/stm32mpu/wiki/Getting_started/STM32MP2_boards/STM32MP257x-EV1/Develop_on_Arm%C2%AE_Cortex%C2%AE-A35/Modify,_rebuild_and_reload_the_Linux%C2%AE_kernel. I am doing the step make ${IMAGE_KERNEL} vmlinux dtbs LOADADDR=0xC2000040 O="${OUTPUT_BUILD_DIR}" and when I run make I get the following output:

make[1]: Entering directory '/home/carson.kirk@internal.etherform.com/STM32MPU_Workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp2-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/aarch64-ostl-linux/linux-stm32mp-6.1.82-stm32mp-r2-r0/build'
GEN Makefile
HOSTLD scripts/dtc/dtc
/home/carson.kirk@internal.etherform.com/STM32MPU_Workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/usr/lib/gcc/x86_64-ostl_sdk-linux/12.3.0/../../../../lib/libc.so: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
make[2]: *** [/home/carson.kirk@internal.etherform.com/STM32MPU_Workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp2-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/aarch64-ostl-linux/linux-stm32mp-6.1.82-stm32mp-r2-r0/linux-6.1.82/scripts/Makefile.host:120: scripts/dtc/dtc] Error 1
make[1]: *** [/home/carson.kirk@internal.etherform.com/STM32MPU_Workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp2-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/aarch64-ostl-linux/linux-stm32mp-6.1.82-stm32mp-r2-r0/linux-6.1.82/Makefile:1524: scripts_dtc] Error 2
make[1]: Leaving directory '/home/carson.kirk@internal.etherform.com/STM32MPU_Workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp2-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/aarch64-ostl-linux/linux-stm32mp-6.1.82-stm32mp-r2-r0/build'
make: *** [Makefile:238: __sub-make] Error 2

I am unsure how to fix this error. Any help would be greatly appreciated. Thanks!

 

Carson

Best answer by krotti42

Seems to be an installation issue from the installation script.

The following libc path isn't correct or there is a missing symbolic link to libc:

sysroots/x86_64-ostl_sdk-linux/lib/usr/libc.so is indeed no shared object file:

$ file libc.so
libc.so: ASCII text, with very long lines (304)
$ cat libc.so
/* GNU ld script
 Use the shared library, but some functions are only in
 the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/lib/libc.so.6 /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/usr/lib/libc_nonshared.a AS_NEEDED ( /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/lib/ld-linux-x86-64.so.2 ) )
$

The real libc shared library can be found under sysroots/x86_64-ostl_sdk-linux/lib.

 

As workaround you could try to delete the libc.so and text file and create a symbolic link with ln.

$ rm libc.so
$ ln -s ../../lib/libc.so.6 libc.so

 

2 replies

Explorer
October 31, 2024

I am also experiencing the same exact issue. Any feedback would be great!

krotti42Best answer
Associate II
October 31, 2024

Seems to be an installation issue from the installation script.

The following libc path isn't correct or there is a missing symbolic link to libc:

sysroots/x86_64-ostl_sdk-linux/lib/usr/libc.so is indeed no shared object file:

$ file libc.so
libc.so: ASCII text, with very long lines (304)
$ cat libc.so
/* GNU ld script
 Use the shared library, but some functions are only in
 the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/lib/libc.so.6 /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/usr/lib/libc_nonshared.a AS_NEEDED ( /home/jk/Downloads/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/lib/ld-linux-x86-64.so.2 ) )
$

The real libc shared library can be found under sysroots/x86_64-ostl_sdk-linux/lib.

 

As workaround you could try to delete the libc.so and text file and create a symbolic link with ln.

$ rm libc.so
$ ln -s ../../lib/libc.so.6 libc.so

 

CarsonAuthor
Associate III
November 4, 2024

Yep that worked! thank you so much!