Cross compiling Bloomd

I'm trying to cross compile the Bloomd library for development purposes, but it's failing on the a single file's calls to mmintrin.h/emmintrin.h/xmmintrin.h with a series of errors. Here's one of the errors as representation (the others only differ in the specific file, location, and function):

> /home/ubuntu/source/build_dir/toolchain-mipsel_74kc_gcc-5.4.0_musl-1.1.15/gcc-5.4.0/gcc/config/i386/emmintrin.h: In function '_mm_mulhi_epu16':
> /home/ubuntu/source/build_dir/toolchain-mipsel_74kc_gcc-5.4.0_musl-1.1.15/gcc-5.4.0/gcc/config/i386/emmintrin.h:1398:3: error: can't convert between vector values of different size

With the same build of toolchain, I can build other files successfully, including the rest of the Bloomd library. Has anyone else had issues with *mmintrin.h?


Try using -std=gnu++11 instead of -std=c++11. If you still encounter errors, provide a log with more context so that we can see the compiler ocmmand line etc.

Hi @jow,

Thanks for getting back with me! I guess I should have clarified - Bloomd is a C library typically compiled via SCons with -std=c99 (see line 18 of log below)


In this case try -std=gnu99 instead of -std=c99. The vector size errors above can happen if strict ANSI mode is triggered through -std={c,c++}*


Tried with -std=gnu99:

With -std=gnu99, the compiler can't find emmintrin.h (see line 21). That file is in the build_dir (see line 25). Tried adding -I to the CCFLAGS to include the directory where emmintrin.h is located, and now I'm getting the same errors as with -std=c99:

For future Googlers:

I found this issue was caused by SSE functions being called by art.c (_mm_* function calls in find_child(...) and add_child16(...)). I've submitted a pull request to bloomd and libart to enable non-x86 support by executing those functions without the SSE functions when on a non-x86 architecture.

Hey there

Are you know if there is an how to , how to cross compile a source for lede architecture allwinner a20.
Got an source to which i have to compile.