git-artes / gr-tempest

An implementation of TEMPEST en GNU Radio
https://iie.fing.edu.uy/investigacion/grupos/artes/es/proyectos/espionaje-por-emisiones-electromagneticas/
555 stars 66 forks source link

make failed on ubuntu #2

Closed cn0xroot closed 4 years ago

cn0xroot commented 4 years ago

make

Scanning dependencies of target gnuradio-tempest
[  4%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o
[  8%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o
In file included from /usr/include/c++/5/random:35:0,
                 from /home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.h:29,
                 from /home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:30:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from /home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:30:0:
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.h:55:15: error: ‘uniform_real_distribution’ in namespace ‘std’ does not name a template type
          std::uniform_real_distribution<float> d_dist;
               ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.h:56:15: error: ‘minstd_rand’ in namespace ‘std’ does not name a type
          std::minstd_rand d_gen;
               ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc: In constructor ‘gr::tempest::sampling_synchronization_impl::sampling_synchronization_impl(int, double)’:
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:52:15: error: class ‘gr::tempest::sampling_synchronization_impl’ does not have any field named ‘d_dist’
               d_dist(0, 1),
               ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:53:15: error: class ‘gr::tempest::sampling_synchronization_impl’ does not have any field named ‘d_gen’
               d_gen(std::random_device{}())
               ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:53:21: error: ‘random_device’ is not a member of ‘std’
               d_gen(std::random_device{}())
                     ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc: In member function ‘virtual int gr::tempest::sampling_synchronization_impl::general_work(int, gr_vector_int&, gr_vector_const_void_star&, gr_vector_void_star&)’:
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:177:19: error: ‘d_gen’ was not declared in this scope
         if(d_dist(d_gen)<d_proba_of_updating){
                   ^
/home/x/SDR/gr-tempest/lib/sampling_synchronization_impl.cc:177:24: error: ‘d_dist’ was not declared in this scope
         if(d_dist(d_gen)<d_proba_of_updating){
                        ^
lib/CMakeFiles/gnuradio-tempest.dir/build.make:86: recipe for target 'lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o' failed
make[2]: *** [lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o] Error 1
CMakeFiles/Makefile2:174: recipe for target 'lib/CMakeFiles/gnuradio-tempest.dir/all' failed
make[1]: *** [lib/CMakeFiles/gnuradio-tempest.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
OS:ubuntu 16.04
GNURadio:3.7.12.0
git-artes commented 4 years ago

Hi, In order to make the sampling synchronization less CPU intensive I update the sampling correction only during a fraction of the calls to work. The actual calls are random, and I use what I thought it was standard c++ (as it worked out-of-the-box in my Ubuntu 18.04). Did you try using the -std=c++11 flag when compiling? Let me know if that works and I'll add it to the FAQ. best

fe8769a commented 4 years ago

hello error too

make -j4 [ 12%] Generating init.pyc, image_source.pyc [ 12%] Building CXX object swig/CMakeFiles/_tempest_swig_doc_tag.dir/_tempest_swig_doc_tag.cpp.o [ 12%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o [ 12%] Built target pygen_apps_9a6dd [ 16%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o [ 20%] Generating init.pyo, image_source.pyo [ 25%] Linking CXX executable _tempest_swig_doc_tag [ 25%] Built target _tempest_swig_doc_tag [ 29%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/Vsync_impl.cc.o [ 29%] Built target pygen_python_bc2ed [ 33%] Generating documentation with doxygen [ 33%] Built target doxygen_target [ 37%] Generating doxygen xml for tempest_swig_doc docs [ 41%] Generating python docstrings for tempest_swig_doc [ 41%] Built target tempest_swig_swig_doc [ 45%] Building CXX object swig/CMakeFiles/_tempest_swig_swig_tag.dir/_tempest_swig_swig_tag.cpp.o [ 50%] Linking CXX executable _tempest_swig_swig_tag [ 50%] Built target _tempest_swig_swig_tag [ 54%] Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o /home/X/gr-tempest/lib/sampling_synchronization_impl.cc: In member function ‘virtual int gr::tempest::sampling_synchronization_impl::general_work(int, gr_vector_int&, gr_vector_const_void_star&, gr_vector_void_star&)’: /home/X/gr-tempest/lib/sampling_synchronization_impl.cc:184:17: error: ‘volk_32fc_x2_add_32fc’ was not declared in this scope volk_32fc_x2_add_32fc(&d_historic_corr[0], &d_historic_corr[0], &d_current_corr[0], 2d_max_deviation_px+1); ^~~~~ /home/X/gr-tempest/lib/sampling_synchronization_impl.cc:184:17: note: suggested alternative: ‘volk_32f_x2_add_32f’ volk_32fc_x2_add_32fc(&d_historic_corr[0], &d_historic_corr[0], &d_current_corr[0], 2d_max_deviation_px+1); ^~~~~ volk_32f_x2_add_32f lib/CMakeFiles/gnuradio-tempest.dir/build.make:86: recipe for target 'lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o' failed make[2]: [lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o] Error 1 make[2]: Attente des tâches non terminées.... [ 58%] Generating tempest_swig.tag Scanning dependencies of target tempest_swig_swig_2d0df [ 62%] Building CXX object swig/CMakeFiles/tempest_swig_swig_2d0df.dir/tempest_swig_swig_2d0df.cpp.o [ 66%] Linking CXX executable tempest_swig_swig_2d0df Swig source CMakeFiles/Makefile2:137: recipe for target 'lib/CMakeFiles/gnuradio-tempest.dir/all' failed make[1]: [lib/CMakeFiles/gnuradio-tempest.dir/all] Error 2 make[1]: Attente des tâches non terminées.... [ 66%] Built target tempest_swig_swig_2d0df Makefile:140: recipe for target 'all' failed make: *** [all] Error 2

Tryed also cmake -std=gnu++11 ../

Same error

Did a complete volks_profile

lubuntu 18.04.2 Gnuradio 3.7.11

git-artes commented 4 years ago

Hi, This is another problem, and has to do with the version of VOLK you have installed in your system. Please start another issue for further exchanges. I've checked and adding complexes in volk was included in version 1.4 of VOLK (I'll add that to the cmake files to enforce that). You seem to have version 1.3 installed. Not sure what version comes with GNU Radio 3.7, but both 1.3 and 1.4 are available as binary installs in my Ubuntu 18.04. best

cn0xroot commented 4 years ago

@git-artes cool,It works fine now

git-artes commented 4 years ago

great. I'll add that to the FAQ. Thanks for the feedback! best

alphafox02 commented 4 years ago

How are you getting volk 1.4 for 18.04? I've tried the flags and I assume i'm still having the same issue due to what appears to be volk 1.3. When I go look it also appears volk 1.3 is what's available for 18.04, not 1.4.

git-artes commented 4 years ago

Hi, Maybe you could try using GNU Radio's PPA. See https://wiki.gnuradio.org/index.php/InstallingGR#Ubuntu_PPA_Installation (and use the 3.7 version). Sadly I'm not 100% sure how I installed my GNU radio, but that should work, I think. Remember to uninstall GNU radio before installing new versions. Best

alphafox02 commented 4 years ago

I'll keep trying. I uninstalled gnuradio etc.. put the PPA for the 3.7 and got excited because it pulled down 3.7.13, however, I still get the same error and when I scroll up and look at the cmake output i can see it still saying it finds volk 1.3.

git-artes commented 4 years ago

Ok. I'll also try to modify the code si that it fallbacks to a generic sum if the VOLK version is not the correct one. I'll keep you posted. Best

git-artes commented 4 years ago

Hi, In the meantime, I've tested gr-tempest on a fresh 18.04 and it worked. You may use the docker container I've prepared for this, which I share in https://github.com/git-artes/docker-gnuradio. I've also added a comment on the README regarding this. I'll nevertheless try to make the module independent of the installed version of VOLK. best

git-artes commented 4 years ago

Hi, I've just updated the sampling synchronization block and a cmake file. cmake will check whether you have the required VOLK add function, and if not it will fallback to a generic implementation. It should work, but if you could confirm it I would be thankful. Note that you have to delete CMakeCache.txt from the build folder and execute cmake .. for these changes to take place. best Federico

alphafox02 commented 4 years ago

I’ll try it today and let you know as soon as possible. Thank you.

alphafox02 commented 4 years ago

Here's my feedback. I haven't tried a stock 18.04, but I did try a fresh install of "DragonOS LTS" based on 18.04. I did several tests. I've found that I did not have to install libboost-all-dev (confirmed it was missing, but i still didn't install it) or any of the other packages as they were already there, swig etc..

I pulled down your source code. Did the install directions at first without the extra flag, compiled just fine. I tried the sample and got the sync error without gnuradio. Uninstalled, redid with the extra flag, same issue. Then it dawned on me I wasn't running ldconfig after installing gr-tempest. So i uninstalled again, deleted the build directory, made a new one and ran cmake without the extra flag. After I did make and make install I made sure to run sudo ldconfig.

There's no issues running the sample now. So long story short, there's no need to update VOLK now, it seems to run just fine with the 1.3.

Thank you!

git-artes commented 4 years ago

Great. Thanks for checking.

alphafox02 commented 4 years ago

No problem. I've been trying to check with SDRs, but I don't have a USRP, only RTL-SDR (bandwidth probably not enough) and a HackRF (weird that it worked one time, meaning i could see fuzzy stuff in the unamed window, but since then I get either errors showing me it's using hackrf driver but thinks it's ettus and/or no fuzzy and black only on the unamed window). Sorry for clogging up your issues box though. I'll keep checking and see what I can figure out or open another ticket.