cross compile on arm

cross compile on arm

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/

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/ 

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?


3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Try without the following in build/

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


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

Leave a Comment

Please sign in to add a comment. Not a member? Join today