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.

Cross compiler not detecting library files

Hi all,

I am trying to setup cross compiler on a  CentOS machine. For that, i have downloaded and installed ti-sdk-am335x-evm-07.00.00.00. For testing compiler working , i am trying to compile c code [ thread-ex.c]mentioned @processors.wiki.ti.com/.../Sitara_Linux_SDK_GCC_Toolchain . I Am getting following error when i tried to compile above program . I am using linux-devkit/environment-setup script setup environment for compilation  .

 [linux-devkit]:/home/gokul/SDK/utils/test_compiler>
 [linux-devkit]:/home/gokul/SDK/utils/test_compiler> arm-linux-gnueabihf-gcc -lpthread thread-ex.c -o thread-ex
 /opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find crt1.o: No such file or directory
 /opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find crti.o: No such file or directory
 /opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lpthread
 collect2: error: ld returned 1 exit status
[linux-devkit]:/home/gokul/SDK/utils/test_compiler>


This is my compiler version :


[linux-devkit]:/home/gokul/SDK/utils/test_compiler> arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) 4.7.3 20130226 (prerelease)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[linux-devkit]:/home/gokul/SDK/utils/test_compiler>

I think some more setting is needed for proper working .Let me know if any additional setting needs to be done . 

Thanks and regards

Gokul C G[gokul.g@kalkitech.in]

  • Hi Gokul,

    Can you please share the setup of your environment variables: ARCH, CROSS_COMPILE, PATH ?

    Here are the steps I took before issuing  arm-linux-gnueabihf-gcc -lpthread test.c -o thread1-ex:

    x0155517@mms:~/ti-sdk-am335x-evm-07.00.00.00/tst$ export ARCH=arm

    x0155517@mms:~/ti-sdk-am335x-evm-07.00.00.00/tst$ export CROSS_COMPILE=arm-linux-gnueabihf-

    x0155517@mms:~/ti-sdk-am335x-evm-07.00.00.00/tst$ export PATH=$PATH:/home/x0155517/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/

    And the cross-compilation worked.

    Best Regards,

    Yordan

  • Hi,

    I am using environment-setup file shipped along with SDK , so environment setup will be as follows ,

    "source /opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/environment-setup"


    SDK_PATH="/opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit"
    if [ -z "$ZSH_NAME" ] && [ "x$0" = "x./environment-setup" ]; then
        echo "Error: This script needs to be sourced. Please run as \". ./environment-setup\""
        exit 1
    else
        if [ -n "$BASH_SOURCE" ]; then
            SDK_PATH="`dirname $BASH_SOURCE`"
        fi
        SDK_PATH=`readlink -f "$SDK_PATH"`
        export SDK_PATH
    fi
    export SDK_SYS=i686-arago-linux
    export REAL_MULTIMACH_TARGET_SYS=cortexa8hf-vfp-neon-3.8-oe-linux-gnueabi
    export TOOLCHAIN_SYS=arm-linux-gnueabihf
    export TOOLCHAIN_PREFIX=$TOOLCHAIN_SYS-
    export SDK_PATH_NATIVE=/opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux
    export SDK_PATH_TARGET=/opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/$REAL_MULTIMACH_TARGET_SYS
    export PATH=$SDK_PATH_NATIVE/usr/bin:$PATH
    export CPATH=$SDK_PATH_TARGET/usr/include:$CPATH
    export PKG_CONFIG_SYSROOT_DIR=$SDK_PATH_TARGET
    export PKG_CONFIG_PATH=$SDK_PATH_TARGET/usr/lib/pkgconfig
    export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
    export CONFIG_SITE=/opt/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/site-config-$REAL_MULTIMACH_TARGET_SYS
    export CC=${TOOLCHAIN_PREFIX}gcc
    export CXX=${TOOLCHAIN_PREFIX}g++
    export GDB=${TOOLCHAIN_PREFIX}gdb
    export CPP="${TOOLCHAIN_PREFIX}gcc -E -D_GNU_SOURCE"
    export NM=${TOOLCHAIN_PREFIX}nm
    export AS=${TOOLCHAIN_PREFIX}as
    export AR=${TOOLCHAIN_PREFIX}ar
    export RANLIB=${TOOLCHAIN_PREFIX}ranlib
    export OBJCOPY=${TOOLCHAIN_PREFIX}objcopy
    export OBJDUMP=${TOOLCHAIN_PREFIX}objdump
    export STRIP=${TOOLCHAIN_PREFIX}strip
    export CONFIGURE_FLAGS="--target=arm-oe-linux-gnueabi --host=arm-oe-linux-gnueabi --build=i686-linux --with-libtool-sysroot=$SDK_PATH_TARGET"
    export CPPFLAGS=" -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8 --sysroot=$SDK_PATH_TARGET"
    export CFLAGS="$CPPFLAGS"
    export CXXFLAGS="$CPPFLAGS"
    export LDFLAGS=" --sysroot=$SDK_PATH_TARGET"
    export OECORE_NATIVE_SYSROOT=$SDK_PATH_NATIVE
    export OECORE_TARGET_SYSROOT=$SDK_PATH_TARGET
    export OECORE_ACLOCAL_OPTS="-I $SDK_PATH_NATIVE/usr/share/aclocal"
    export OECORE_DISTRO_VERSION="2013.12"
    export OECORE_SDK_VERSION="2013.12"
    export PATH=$SDK_PATH_NATIVE/usr/bin/qtopia:$PATH
    export OE_QMAKE_CFLAGS="$CFLAGS"
    export OE_QMAKE_CXXFLAGS="$CXXFLAGS"
    export OE_QMAKE_LDFLAGS="$LDFLAGS"
    export OE_QMAKE_CC=$CC
    export OE_QMAKE_CXX=$CXX
    export OE_QMAKE_LINK=$CXX
    export OE_QMAKE_AR=$AR
    export OE_QMAKE_LIBDIR_QT=$SDK_PATH_TARGET/usr/lib
    export OE_QMAKE_INCDIR_QT=$SDK_PATH_TARGET/usr/include/qtopia
    export OE_QMAKE_HOST_BINDIR_QT=$SDK_PATH_NATIVE/usr/bin/
    export OE_QMAKE_MOC=$SDK_PATH_NATIVE/usr/bin/moc4
    export OE_QMAKE_UIC=$SDK_PATH_NATIVE/usr/bin/uic4
    export OE_QMAKE_UIC3=$SDK_PATH_NATIVE/usr/bin/uic34
    export OE_QMAKE_RCC=$SDK_PATH_NATIVE/usr/bin/rcc4
    export OE_QMAKE_QDBUSCPP2XML=$SDK_PATH_NATIVE/usr/bin/qdbuscpp2xml4
    export OE_QMAKE_QDBUSXML2CPP=$SDK_PATH_NATIVE/usr/bin/qdbusxml2cpp4
    export OE_QMAKE_QT_CONFIG=$SDK_PATH_TARGET/usr/share/qtopia/mkspecs/qconfig.pri
    export OE_QMAKE_STRIP="echo"
    export QMAKESPEC=$SDK_PATH_TARGET/usr/share/qtopia/mkspecs/linux-gnueabi-oe-g++
    export QMAKE_DEFAULT_LIBDIRS=${QT_QMAKE_LIBDIR_QT}
    export QMAKE_DEFAULT_INCDIRS=${QT_QMAKE_INCDIR_QT}

    Note : I am using centOS not ubuntu.

    Thanks and regards
    Gokul CG[gokul.g@kalkitech.in]

  • Hi,
    I don't have experience with CentOS (maybe someone should elaborate on this ...), but since it is a linux distribution, you should be able to set environment variables PATH, ARCH & CROSS_COMPILE manually. Personally I don't use that env setup file. One potential issue, I see at first glance with this setup is, that there is no ARCH for which you compile.

    Can you try to export just the three variables I pointed in the path where your C files are & run the arm-linux-gnueabihf-gcc command.

    Best Regards,
    Yordan
  • Hi Yordan Kovachev,

    If I do export of ARCH=arm ,CROSS_COMPILE=arm-linux-gnueabihf- and PATH variable to compiler , its not properly detecting and linking its include files and library files.
    Error like stdlib.h: no such file or directory is coming and compilation fails at its first stage itself .

    Thanks and regards
    Gokul CG[gokul.g@kalkitech.in]