在BeagleBoneDebian 10上安装UHD时出错

问题描述

我遵循了https://files.ettus.com/manual/page_build_guide.html

上的指示

我无法在Debian上为uhd构建和安装uhd和.cpp文件 make 命令后出现错误 make .. 没问题。我认为问题出在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

我现在能做什么?

解决方法

编辑文件CMakeCache.txt,位于uhd / host / build/。

//Use NEON SIMD instuctions,if applicable
NEON_SIMD_ENABLE:BOOL=OFF

然后使用:

make

它解决了问题。