在 BeagleBone (Debian 10) 上安装 UHD 时出错

Error during installation UHD on BeagleBone (Debian 10)

我遵循了以下说明:https://files.ettus.com/manual/page_build_guide.html

我无法在我的 Debian 上为 uhd 构建和安装 uhd 和 .cpp 文件。 make 命令后出现错误。 cmake .. 没问题。我认为问题出在称为 NEON 的东西上。

处理器信息:

cat /proc/cpuinfo

processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 995.32
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : Generic AM33XX (Flattened Device Tree)
Revision        : 0000
Serial          : 4219BBBK05E9

发布:

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

安装:

    root@beaglebone:/home/debian/uhd/host/build# make
    [  2%] Built target uhd_rpclib
    [  2%] Built target uhd-resources
    [  3%] Building CXX object lib/CMakeFiles/uhd.dir/convert/convert_with_neon.cpp.o
    In file included from /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:10:
    /usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h: In member function ‘virtual void __convert_fc32_1_sc16_item32_le_1_PRIORITY_SIMD::operator()(const input_type&, const output_type&, size_t)’:
    /usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
     vdupq_n_f32 (float32_t __a)
     ^~~~~~~~~~~
    /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:27:33: note: called from here
         float32x4_t Q0 = vdupq_n_f32(float(scale_factor));
                          ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
    In file included from /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:10:
    /usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10844:1: error: inlining failed in call to always_inline ‘void vst1_s16(int16_t*, int16x4_t)’: target specific option mismatch
     vst1_s16 (int16_t * __a, int16x4_t __b)
     ^~~~~~~~
    /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:50:17: note: called from here
             vst1_s16((reinterpret_cast<int16_t*>(&output[i + 4])), D13);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:10:
    /usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:7440:1: error: inlining failed in call to always_inline ‘int32x4_t vcvtq_s32_f32(float32x4_t)’: target specific option mismatch
     vcvtq_s32_f32 (float32x4_t __a)
     ^~~~~~~~~~~~~
    /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:47:39: note: called from here
             int32x4_t Q9   = vcvtq_s32_f32(Q8);
                              ~~~~~~~~~~~~~^~~~
    In file included from /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:10:
    /usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1172:1: error: inlining failed in call to always_inline ‘float32x4_t vmulq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
     vmulq_f32 (float32x4_t __a, float32x4_t __b)
     ^~~~~~~~~
    /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:46:35: note: called from here
             float32x4_t Q8 = vmulq_f32(Q7, Q0);
                              ~~~~~~~~~^~~~~~~~
 In file included from /home/debian/uhd/host/lib/convert/convert_with_neon.cpp:10:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10392:1: error: inlining failed in call to always_inline ‘float32x4_t vld1q_f32(const float32_t*)’: target specific option mismatch
 vld1q_f32 (const float32_t * __a)
 ^~~~~~~~~
/home/debian/uhd/host/lib/convert/convert_with_neon.cpp:29:36: note: called from here
         float32x4_t Q1  = vld1q_f32(reinterpret_cast<const float*>(&input[i]));
                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [lib/CMakeFiles/uhd.dir/build.make:502: lib/CMakeFiles/uhd.dir/convert/convert_with_neon.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:129: lib/CMakeFiles/uhd.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

我现在能做什么?

编辑位于 uhd/host/build/.

的文件 CMakeCache.txt
//Use NEON SIMD instuctions, if applicable
NEON_SIMD_ENABLE:BOOL=OFF

然后使用:

make

解决了问题。