0

I'm using

$ g++ --version g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

on a LinuxMint 17.2 box

Trying to build gr-scan from https://github.com/briand/gr-scan.git

with

gnuradio 3.7.10.1-1~ubuntu14.04.1myriadr amd64 GNU Radio Software Radio Toolkit

I've found folks dealing with g++ similar breakage of assorted packages, or puzzles in their own code. But, I have not found a clear solutionthat's applicable.

It appears that some voodoo with intrinsics is the culprit.

In my case the error goes like this:

g++ -DVERSION="\"gr-scan 2012082301\"" -std=c++11 -Wall -I/usr/local/include -largp -lgnuradio-pmt -lgnuradio-runtime -lgnuradio-blocks -lgnuradio-fft -lgnuradio-filter -lgnuradio-osmosdr -lboost_system -O2 -Wno-unused-function -o gr-scan main.cpp
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.8/include/x86intrin.h:30:0,
                 from /usr/include/x86_64-linux-gnu/c++/4.8/bits/opt_random.h:33,
                 from /usr/include/c++/4.8/random:51,
                 from /usr/include/c++/4.8/bits/stl_algo.h:65,
                 from /usr/include/c++/4.8/algorithm:62,
                 from /usr/include/boost/smart_ptr/shared_ptr.hpp:42,
                 from /usr/include/boost/shared_ptr.hpp:17,
                 from /usr/local/include/gnuradio/sptr_magic.h:26,
                 from /usr/local/include/gnuradio/basic_block.h:27,
                 from /usr/local/include/gnuradio/hier_block2.h:27,
                 from /usr/local/include/gnuradio/top_block.h:27,
                 from topblock.hpp:26,
                 from main.cpp:23:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_cvtsi32_si64(int)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:61:54: error: can’t convert between vector values of different size
   return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
                                                      ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘int _mm_cvtsi64_si32(__m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:104:53: error: cannot convert ‘__m64 {aka int}’ to ‘__vector(2) int’ for argument ‘1’ to ‘int __builtin_ia32_vec_ext_v2si(__vector(2) int, int)’
   return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);
                                                     ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_packs_pi16(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:143:69: error: cannot convert ‘__v4hi {aka short int}’ to ‘__vector(4) short int’ for argument ‘1’ to ‘__vector(8) char __builtin_ia32_packsswb(__vector(4) short int, __vector(4) short int)’
   return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2);
                                                                     ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_packs_pi32(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:158:69: error: cannot convert ‘__m64 {aka int}’ to ‘__vector(2) int’ for argument ‘1’ to ‘__vector(4) short int __builtin_ia32_packssdw(__vector(2) int, __vector(2) int)’
   return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2);
                                                                     ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_packs_pu16(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:173:69: error: cannot convert ‘__v4hi {aka short int}’ to ‘__vector(4) short int’ for argument ‘1’ to ‘__vector(8) char __builtin_ia32_packuswb(__vector(4) short int, __vector(4) short int)’
   return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2);
                                                                     ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_unpackhi_pi8(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:187:70: error: cannot convert ‘__v8qi {aka char}’ to ‘__vector(8) char’ for argument ‘1’ to ‘__vector(8) char __builtin_ia32_punpckhbw(__vector(8) char, __vector(8) char)’
   return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2);
                                                                      ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_unpackhi_pi16(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:201:70: error: cannot convert ‘__v4hi {aka short int}’ to ‘__vector(4) short int’ for argument ‘1’ to ‘__vector(4) short int __builtin_ia32_punpckhwd(__vector(4) short int, __vector(4) short int)’
   return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2);
                                                                      ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_unpackhi_pi32(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:215:70: error: cannot convert ‘__m64 {aka int}’ to ‘__vector(2) int’ for argument ‘1’ to ‘__vector(2) int __builtin_ia32_punpckhdq(__vector(2) int, __vector(2) int)’
   return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2);
                                                                      ^
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h: In function ‘__m64 _mm_unpacklo_pi8(__m64, __m64)’:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/mmintrin.h:229:70: error: cannot convert ‘__v8qi {aka char}’ to ‘__vector(8) char’ for argument ‘1’ to ‘__vector(8) char __builtin_ia32_punpcklbw(__vector(8) char, __vector(8) char)’
   return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2);
                                                                      ^

etc.

Is there an easy solution?

1 Answers1

0

This definitely doesn't look like a GNU Radio problem, more like something is fundamentally wrong with your GCC/g++/stdlibc++ installation. Make sure you don't have conflicting installations, or the flags used when the gnuradio package was built are incompatible to what you're using now.

In fact, the std=c++11 does seem suspicious.

Marcus Müller
  • 34,677
  • 4
  • 53
  • 94
  • The GCC/g++/stdlibc++ installation was all done using the package management tools, not using a manual error prone approach. I did a dpkg --verify and nothing relevant was reported. – Drew Einhorn Jan 23 '17 at 14:56
  • I tried removing the std=c++11 from the gr-scan Makefile and got an error, because the author used some syntax from the 2011 c++ standard. I'll get out the manuals and rewrite it for the default 1994 standard. – Drew Einhorn Jan 23 '17 at 15:06
  • I'll take a look at the gnuradio install and the compile flags. It was done using a script from https://smile.amazon.com/Hobbyists-Guide-RTL-SDR-Software-Defined/dp/1514716690/ – Drew Einhorn Jan 23 '17 at 15:13
  • puh, I don't know that book. I'd recommend just using Pybombs, but I mean, you've got a working GNU Radio installation, so this is really some compiler shenanigans going on here. – Marcus Müller Jan 23 '17 at 15:46
  • **wait** in your question you quoted what looks like a *packet name*, and now you say you've installed GNU Radio from source! Is it possible you have two conflicting installations of GNU Radio? – Marcus Müller Jan 23 '17 at 15:53