I need run 32 bit application on imx8m plus board

I need to run a 32-bit application on the imx8m plus board but that needs multilib support.While bitbaking, I had an errors with the devIL recipe, which I fixed by a method followed by the issue fixed in community, after which I received a linker error with imx-gpu-sdk saying that the lIL lib was not found.How can I fix this error?

DemoApp.Util.Graphics.a -lIL DemoFramework/FslDemoHost/Console/libFslDemoHost.Console.a DemoFramework/FslDemoPlatform/Link/libFslDemoPlatform.Link.a DemoFramework/FslDemoPlatform/libFslDemoPlatform.a DemoFramework/FslDemoHost/Base/libFslDemoHost.Base.a DemoFramework/FslDemoApp/Base/libFslDemoApp.Base.a DemoFramework/FslNativeWindow/Base/libFslNativeWindow.Base.a DemoFramework/FslDemoApp/Shared/libFslDemoApp.Shared.a DemoFramework/FslGraphics/libFslGraphics.a DemoFramework/FslDemoService/CpuStats/Impl/libFslDemoService.CpuStats.Impl.a DemoFramework/FslService/Impl/libFslService.Impl.a DemoFramework/FslService/Consumer/libFslService.Consumer.a DemoFramework/FslVersion/libFslVersion.a DemoFramework/FslBase/libFslBase.a -s -lfmt && :
| /home/mysticp0004/var-fsl-yocto/build_xwayland/tmp/work/armv8a-mx8mp-fslc-linux/imx-gpu-sdk/6.0.2-r0/recipe-sysroot-native/usr/bin/aarch64-fslc-linux/…/…/libexec/aarch64-fslc-linux/gcc/aarch64-fslc-linux/11.3.0/ld: cannot find -lIL: No such file or directory
| collect2: error: ld returned 1 exit status
| [1450/2889] Building CXX object DemoFramework/FslUtil/Vulkan1_0/UnitTest/Helper/CMakeFiles/FslUtil.Vulkan1_0.UnitTest.Helper.dir/home/mysticp0004/var-fsl-yocto/build_xwayland/tmp/work/armv8a-mx8mp-fslc-linux/imx-gpu-sdk/6.0.2-r0/git/DemoFramework/FslUtil/Vulkan1_0/UnitTest/Helper/source/FslUtil/Vulkan1_0/UnitTest/Helper/Dummy.cpp.o
| [1451/2889] Building CXX object DemoFramework/FslUtil/Vulkan1_0/UnitTest/CMakeFiles/FslUtil.Vulkan1_0.UnitTest.dir/home/mysticp0004/var-fsl-yocto/build_xwayland/tmp/work/armv8a-mx8mp-fslc-linux/imx-gpu-sdk/6.0.2-r0/git/DemoFramework/FslUtil/Vulkan1_0/UnitTest/source/FslUtil/Vulkan1_0/UnitTest/Util/Test_DeviceMemoryUtil.cpp.o
| [1452/2889] Building CXX object DemoFramework/FslUtil/Vulkan1_0/UnitTest/CMakeFiles/FslUtil.Vulkan1_0.UnitTest.dir/home/mysticp0004/var-fsl-yocto/build_xwayland/tmp/work/armv8a-mx8mp-fslc-linux/imx-gpu-sdk/6.0.2-r0/git/DemoFramework/FslUtil/Vulkan1_0/UnitTest/source/FslUtil/Vulkan1_0/UnitTest/Util/Test_VUBufferMemory.cpp.o
| ninja: build stopped: subcommand failed.
| WARNING: The build command ‘cmake --build . --target install – -j 4’ failed with ‘1’. It was run with CWD: ‘/home/mysticp0004/var-fsl-yocto/build_xwayland/tmp/work/armv8a-mx8mp-fslc-linux/imx-gpu-sdk/6.0.2-r0/git/build/Yocto/Ninja/release’

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


To resolve the linker error indicating that the -lIL library (DevIL image library) was not found during the build process of your 32-bit application on the iMX8M Plus board, follow these steps:

  1. Ensure DevIL is Included in Your Build: First, make sure that the DevIL library is indeed being built and packaged by your Yocto project. This might involve adding the DevIL recipe to your build if it’s not already included. Check your Yocto configuration files (local.conf and any relevant .bb or .bbappend files) to ensure that DevIL is part of the build.

  2. Multilib Configuration: Since you’re working with a 32-bit application on a 64-bit architecture (armv8a for iMX8M Plus), ensure that your Yocto project is configured for multilib support. This involves configuring Yocto to build both 64-bit and 32-bit libraries. You can do this by adding the following to your local.conf file:

    require conf/multilib.conf
    MULTILIBS = "multilib:lib32"
    DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon"
    

    This configuration tells Yocto to build for an armv7a architecture in addition to the native armv8a, ensuring that 32-bit libraries are available.

  3. Adjust the DevIL Recipe for Multilib: If DevIL is not being found because it’s not being built for the correct architecture, you may need to adjust the DevIL recipe to ensure it’s compatible with multilib builds. This could involve setting appropriate COMPATIBLE_HOST flags or using the BBCLASSEXTEND variable to add “lib32” compatibility:

    BBCLASSEXTEND = "native nativesdk lib32"
    
  4. Verify Library Location: After a successful build, verify that the DevIL libraries (libIL.so, libILU.so, libILUT.so) are being placed in the correct directory within your Yocto build’s output image. They should be located in a directory that the linker is searching during the build process, typically within the lib or usr/lib directory of the target root filesystem.

  5. Explicitly Specify Library Paths: If the libraries are being built and packaged correctly but are still not found, you may need to

Please, also check if these links can help you solve your problem:

2D/3D Graphics Acceleration (GPU) | Toradex Developer Center.

Hi @Goudam ,
Let us know if your has been issue is solved or not more help.

Hi @sahil.tx
No it has not resolved till now ,i am tried those method mentioned above .

Hi @Goudam ,
Please refer to the document “IMX_YOCTO_PROJECT_USERS_GUIDE.pdf” from NXP.
Navigate to Sec 5.6.9 Multilib enablement and follow the steps mentioned.