falkenber9 / falcon

FALCON - Fast Analysis of LTE Control channels
GNU Affero General Public License v3.0
241 stars 74 forks source link

Build fails, doesn't recognise existing srsLTE and UHD libraries #3

Closed nebukadnezar closed 3 years ago

nebukadnezar commented 3 years ago

Getting the following error when falcon is trying to build UHD support, probably because my UHD version 4.0.0 is too new?

[ 38%] Building CXX object srsLTE-build/lib/src/phy/rf/CMakeFiles/srslte_rf.dir/uhd_c_api.cpp.o
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=incompatible-pointer-types’ is not valid for C++
In file included from /usr/include/c++/9/typeindex:35,
                 from /usr/local/include/uhd/property_tree.hpp:16,
                 from /usr/local/include/uhd/device.hpp:11,
                 from /usr/local/include/uhd/usrp/multi_usrp.hpp:28,
                 from /home/balt/LTE/falcon/build/srsLTE-src/lib/src/phy/rf/uhd_c_api.cpp:5:
/usr/include/c++/9/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.
   32 | #error This file requires compiler and library support \
      |  ^~~~~

Also, tried to set environment variables for srsLTE which I already have built and running fine, but it's unclear which directory they need to point to - I've set them into the srsLTE git source dir:

SRSLTE_LIBRARIES=/home/xxx/LTE/srsLTE/build/lib/ SRSLTE_INCLUDE_DIRS=/home/xxx/LTE/srsLTE/lib/include

but cmake still doesn't find them and downloads your flavour of srsLTE. Any hints on how to resolve greatly appreciated.

falkenber9 commented 3 years ago

Thank you for the feedback! You are right, compilation with headers from UHD 4.0.0 requires at least C++11.

I have updated the patched version of srsLTE accordingly: https://github.com/falkenber9/srsLTE/commit/05747bc406adfb457d5d598cd9924c298dd44037 Please have a try.

Nevertheless, I recommend to use UHD 3.15.0 for now, since I have experienced occasional rx dropouts with UHD 4.0.0:

OError timed out while receiving samples from UHD.
Error receiving samples
Error calling srslte_ue_sync_work()
SubframeWorkerThread ended

This is presumably fixed in newer versions of srsLTE, but for now FALCON relies on the patched version of srsLTE 18.09. Newer versions include broad API changes that require modifications to FALCON. Work is currently in progress, but I cannot give a timeline.