discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] One more question about GNU Radio cross compilation


From: Paul TT
Subject: [Discuss-gnuradio] One more question about GNU Radio cross compilation
Date: Wed, 14 Oct 2015 11:38:34 +0300

Hello,

I'm trying to build GNU Radio using a toolchain from Mentor Graphics (arm-none-linux-gnueabi-).
Some gnuradio dependecies i have builded manually from source using this toolchain.

Then I created file for environment setup and cmake cross-compile file. They are analogous to:
- environment-setup-armv7ahf-vfp-neon-oe-linux-gnueabi and
- oe-sdk_cross.cmake


environment setup:

export TARGETSYSROOT=/home/user/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc
export PKG_CONFIG_SYSROOT_DIR=$TARGETSYSROOT
export PKG_CONFIG_PATH=$TARGETSYSROOT/usr/lib/pkgconfig
export PKG_CONFIG_LIBDIR=${TARGETSYSROOT}/usr/lib/pkgconfig:${TARGETSYSROOT}/usr/share/pkgconfig
export NATIVE_SYSROOT="/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux"

export CC="arm-none-linux-gnueabi-gcc -mthumb -march=armv6t2 -mfloat-abi=softfp -mfpu=neon"
export CXX="arm-none-linux-gnueabi-g++ -mthumb -march=armv6t2 -mfloat-abi=softfp -mfpu=neon"
export CPP="arm-none-linux-gnueabi-gcc -E -mthumb -march=armv6t2 -mfloat-abi=softfp -mfpu=neon"
export AS="arm-none-linux-gnueabi-as "
export LD="arm-none-linux-gnueabi-ld --sysroot=${TARGETSYSROOT}/libc"
export GDB=arm-none-linux-gnueabi-gdb
export STRIP=arm-none-linux-gnueabi-strip
export AR=arm-none-linux-gnueabi-ar
export RANLIB=arm-none-linux-gnueabi-ranlib
export NM=arm-none-linux-gnueabi-nm
export OBJCOPY=arm-none-linux-gnueabi-objcopy
export OBJDUMP=arm-none-linux-gnueabi-objdump
export M4=m4
export TARGET_PREFIX=arm-none-linux-gnueabi-
export CONFIGURE_FLAGS="--target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --build=x86_64-linux-gnu "
export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types  -funsafe-math-optimizations"
export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types  -funsafe-math-optimizations"
export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
export CPPFLAGS=""
export KCFLAGS=""
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-

cmake toolchain: 

set( CMAKE_SYSTEM_NAME Linux )
#set( CMAKE_C_COMPILER  $ENV{CC} )
#set( CMAKE_CXX_COMPILER  $ENV{CXX} )
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS}  CACHE STRING "" FORCE )
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE ) #same flags for C sources
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources
set( CMAKE_LIBRARY_PATH ${TARGETSYSROOT}/libc/usr/lib )
set( CMAKE_FIND_ROOT_PATH $ENV{TARGETSYSROOT} $ENV{NATIVE_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )



$ arm-none-linux-gnueabi-g++ -v
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-g++
COLLECT_LTO_WRAPPER=/home/user/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)


cmake -Wno-dev -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/ntl_cross.cmake -DCMAKE_INSTALL_PREFIX=../install/usr -DENABLE_GR_VOCODER=OFF -DENABLE_GR_ATSC=OFF -DENABLE_GR_DTV=OFF -DENABLE_DOXYGEN=OFF -DENABLE_GR_UHD=off -DENABLE_GR_QTGUI=OFF -DENABLE_GR_VIDEO_SDL=OFF -DENABLE_GR_WXGUI=OFF -DENABLE_GRC=OFF ../ > cmake_.log 2>&1


Cmake output  : http://pastebin.com/EFb8b4vR


And in this case build fails with error message related to VOLK:

$ make

[  0%] Generating volk_machine_neon_softfp.c
[  0%] Generating ../include/volk/volk.h
[  0%] Generating volk.c
[  1%] Generating ../include/volk/volk_typedefs.h
[  1%] Generating ../include/volk/volk_cpu.h
[  1%] Generating volk_cpu.c
[  1%] Generating ../include/volk/volk_config_fixed.h
[  1%] Generating volk_machines.h
[  1%] Generating volk_machines.c
[  1%] Generating volk_machine_generic.c
Scanning dependencies of target volk_obj
[  1%] Building ASM object volk/lib/CMakeFiles/volk_obj.dir/__/kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm.s.o
[  1%] Building ASM object volk/lib/CMakeFiles/volk_obj.dir/__/kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s.o
/home/user/NT1004/toolchain_build/GR/gnuradio/volk/kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s: Assembler messages:
/home/user/NT1004/toolchain_build/GR/gnuradio/volk/kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s:44: Error: selected processor does not support ARM mode `sxth r6,r6'
make[2]: *** [volk/lib/CMakeFiles/volk_obj.dir/__/kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s.o] Error 1
make[1]: *** [volk/lib/CMakeFiles/volk_obj.dir/all] Error 2
make: *** [all] Error 2



I have installed OE SDK on this machine (x86_64 GNU/Linux) and if I modify PATH and just change in my environment_setup file:
- all 'arm-none-linux-gnueabi-'  to 'arm-oe-linux-gnueabi-' and
- mfloat-abi=softfp to mfloat-abi=hard ,

then I can succesfully compile and link VOLK library.
I noticed that OE SDK uses compiler that supports hard floating-point ABI, while arm-none-linux-gnueabi- supports only softfp ABI



Can anyone explain whether it is possible to build gnu radio using this toolchain? 
Where is the problem and how can I fix errors? I tried many variants in -march option, but always got same errors.

Thank you.


p.s. from gnuradio directory: $ git branch -v
* master b1883cb Merge remote-tracking branch 'jdemel/fec-ber-error-getter'


Regards,
Paul

reply via email to

[Prev in Thread] Current Thread [Next in Thread]