Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

cross compile on arm

Alexander_Z_
Beginner
181 Views

I'm trying to compile tbb on a Cortex-A8 core running linux. 

My cross compilation environment is as follows:
Host: Ubuntu 12.04 64bit
Target:MontaVista Linux (ARM)
Cross Compiler:Sourcery G++ Lite 2009q1-203
TBB version: tbb42_20131003oss

My compilation steps are belos:

1. modified ../build/linux.gcc.inc

CPLUS = /home/zmz/Software/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++
CONLY = /home/zmz/Software/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc

AR = /home/zmz/Software/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ar

RANLIB = /home/zmz/Software/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ranlib

2. make arch=armv7 

I got following error messages

In file included from ../../include/tbb/tbb_machine.h:252,
                 from ../../include/tbb/spin_rw_mutex.h:33,
                 from ../../include/tbb/concurrent_hash_map.h:50,
                 from ../../src/tbb/concurrent_hash_map.cpp:29:
../../include/tbb/machine/gcc_armv7.h:39:2: error: #error compilation requires an ARMv7-a architecture.
make[1]: *** [concurrent_hash_map.o] Error 1
make[1]: Leaving directory `/home/zmz/Software/CrossLibrary/tbb/build/linux_armv7_gcc_cc4.6_libc2.15_kernel3.5.0_debug'
make: *** [tbb] Error 2

So I add '-march=armv7-a'  to CPLUS and CONLY in  ../build/linux.gcc.inc 

And I got another error 

Created ./build/linux_armv7_gcc_cc4.6_libc2.15_kernel3.5.0_release and ..._debug directories
make -C "./build/linux_armv7_gcc_cc4.6_libc2.15_kernel3.5.0_debug"  -r -f ../../build/Makefile.tbb cfg=debug
make[1]: Entering directory `/home/zmz/Software/CrossLibrary/tbb/build/linux_armv7_gcc_cc4.6_libc2.15_kernel3.5.0_debug'
../../build/Makefile.tbb:39: CONFIG: cfg=debug arch=armv7 compiler=gcc target=linux runtime=cc4.6_libc2.15_kernel3.5.0
/home/zmz/Software/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++ -march=armv7-a -o concurrent_hash_map.o -c -MMD -DTBB_USE_DEBUG  -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor    -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_hash_map.cpp
Assembler messages:
Error: unrecognized option -mimplicit-it=thumb
make[1]: *** [concurrent_hash_map.o] Error 1
make[1]: Leaving directory `/home/zmz/Software/CrossLibrary/tbb/build/linux_armv7_gcc_cc4.6_libc2.15_kernel3.5.0_debug'
make: *** [tbb] Error 2

 

Is there any ideas?

Thanks!

0 Kudos
2 Replies
RafSchietekat
Black Belt
181 Views

Try without the following in build/linuc.gcc.inc:

# automatically generate "IT" instructions when compiling for Thumb ISA
ifeq (armv7,$(arch))
    CPLUS_FLAGS    += -Wa,-mimplicit-it=thumb
endif

 

Alexander_Z_
Beginner
181 Views

I have changed the latest crosscompiler and it success, it seems the older one do not support some new features.

Reply