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.

Linux/PROCESSOR-SDK-AM437X: Build and run time shared object (.so) libraries are not compatible

Part Number: PROCESSOR-SDK-AM437X

Tool/software: Linux

For whatever reason, the shared object libraries, libc.so.6 and libstdc++.so.6 are being included in the application build.

Using the command, ldconfig -p -v | grep libname, I was able to locate the libraries at //lib/x86_64-linux-gnu and /usr/lib/x86_64-Linux-gnu. These paths are not defined explicitly in the makefile.

During run time, the include path is /lib. I am getting run time errors about library versions not found.

Using the command, strings libname | grep GLIBC, I was able to see what versions are supported by the library.

The include library versions and the run time library versions are not compatible. How do I make them compatible?

Can I copy shared object files from build host to run host?

  • Hi Phillip,

    I am not sure why your application refers to the x86 libs, AM437x is an ARM platform.
    Can you please create a simple use case to help me understand the problem? Maybe write a simple hollo-world.c and provide the compile log to demonstrate the issue.
  • There are no other occurrences of files named libc and libstdc++ in the TI build environment.
    Where is the compiler/linker supposed to find them?

    Below is the last line from the make process. The project /lib directory is empty, so the compiler/linker must be finding the libraries in the default search path. Where is that defined?

    /home/dev/ti-processor-sdk-linux-am437x-evm-05.02.00.10/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-g++ -I/media/sf_vmshare/CORE_Test/include -L/media/sf_vmshare/CORE_Test/lib -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/home/dev/ti-processor-sdk-linux-am437x-evm-05.02.00.10/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi/ -O2 -pipe -g -feliminate-unused-debug-types -lpthread -O0 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o ./build/apps/coretest ./build/objects/src/Networking.o ./build/objects/src/Utils.o ./build/objects/src/Gpio.o ./build/objects/src/ContinuousTest.o ./build/objects/src/Rtc.o ./build/objects/src/TemperatureI2C.o ./build/objects/src/I2c.o ./build/objects/src/Serial.o ./build/objects/src/Adc.o ./build/objects/src/KB_io.o ./build/objects/src/CoreTest.o ./build/objects/src/InternalGpio.o ./build/objects/src/StatusDisplay.o ./build/objects/src/OLedI2C.o ./build/objects/src/Data.o ./build/objects/src/SdCard.o ./build/objects/src/Logger.o ./build/objects/src/KB_EventHandler.o ./build/objects/src/GpioBase.o ./build/objects/src/AdcData.o ./build/objects/src/EEpromI2C.o ./build/objects/src/ExpandedGpio.o
  • Hi,

    We don't support userspace application development, but I can tell you shouldn't link those x86_64 libs, because you compile it for an ARM platform.

    I have a different version of the SDK installed on my PC, but it shows where the ARM version of libc and libstdc++ libs are located.

    lb@dev:armv7ahf-neon-linux-gnueabi$ pwd
    /home/lb/am57x/ti-processor-sdk-linux-am57xx-evm-05.00.00.15/linux-devkit/sysroots/armv7ahf-neon-linux-gnueab
    lb@dev:armv7ahf-neon-linux-gnueabi$ find . -name 'libc.so'
    ./usr/lib/libc.so
    lb@dev:armv7ahf-neon-linux-gnueabi$ find . -name 'libstdc++.so'
    ./usr/lib/libstdc++.so
    ./lib/debug/libstdc++.so

  • Why doesn't ti-processor-sdk-Linux-am437x-evm-05.02.00.10-Linux-x86-Install.bin contain the libraries for linking SDK Linux applications? We are under the impression it is a complete build environment.

    If the AM437x libraries are not in the install file mentioned above, how do we obtain them?

  • Phillip Holtzman said:
    Why doesn't ti-processor-sdk-Linux-am437x-evm-05.02.00.10-Linux-x86-Install.bin contain the libraries for linking SDK Linux applications? We are under the impression it is a complete build environment.

    Without any log messages I don't understand what is missing.

    Here are the libc/c++ libs in AM437x SDK v5.2:

    lb@dev:armv7ahf-neon-linux-gnueabi$ pwd
    /home/lb/am437x/ti-processor-sdk-linux-am437x-evm-05.02.00.10/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi
    lb@dev:armv7ahf-neon-linux-gnueabi$ find . -name libc.so
    ./usr/lib/libc.so
    lb@dev:armv7ahf-neon-linux-gnueabi$ find . -name libstdc++.so
    ./usr/lib/libstdc++.so
    ./lib/debug/libstdc++.so