GNU Radio,debian 编译错误

GNU Radio, debian compilation error

尝试在最新的 debian 版本 (8.3) 上编译 gnuradio 3.6.5 时遇到问题。

我的 gcc 版本输出:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.2 (Debian 4.9.2-10) 

制作错误:

[  1%] Built target volk
[  1%] Built target test_all
[  1%] Built target volk_profile
[  1%] Built target doxygen_target
[  2%] Built target gruel
[  2%] Built target test_gruel
[  2%] Built target pmt_generated
[  2%] Built target _pmt_swig_doc_tag
[  2%] Built target pmt_swig_swig_doc
[  2%] Built target _pmt_swig_swig_tag
[  2%] Built target _pmt_swig
[  3%] Built target pygen_gruel_src_swig_8de72
[  3%] Built target pygen_gruel_src_python_31e89
[  3%] Built target pygen_gruel_src_python_d3a1d
[ 30%] Built target gnuradio-core
[ 30%] Built target gnuradio-config-info
[ 31%] Built target gr_core_rstest
[ 33%] Built target test-gnuradio-core
Linking CXX executable benchmark_dotprod_ccc
../lib/libtest-gnuradio-core.so: référence indéfinie vers « gr_reverse(std::vector<float, std::allocator<float> > const&) »
collect2: error: ld returned 1 exit status
gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/build.make:95: recipe for target 'gnuradio-core/src/tests/benchmark_dotprod_ccc' failed
make[2]: *** [gnuradio-core/src/tests/benchmark_dotprod_ccc] Error 1
CMakeFiles/Makefile2:1111: recipe for target 'gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/all' failed
make[1]: *** [gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/all] Error 2
Makefile:147: recipe for target 'all' failed
make: *** [all] Error 2

卸载所有旧的 gnuradio 库和二进制文件后出现同样的错误。(--purge)

[ 33%] Building CXX object gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/bug_work_around_6.cc.o
Linking CXX shared library libtest-gnuradio-core.so
[ 33%] Built target test-gnuradio-core
Scanning dependencies of target benchmark_dotprod_ccc
[ 33%] Building CXX object gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/benchmark_dotprod_ccc.cc.o
Linking CXX executable benchmark_dotprod_ccc
../lib/libtest-gnuradio-core.so: référence indéfinie vers « gr_reverse(std::vector<float, std::allocator<float> > const&) »
collect2: error: ld returned 1 exit status
gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/build.make:95: recipe for target 'gnuradio-core/src/tests/benchmark_dotprod_ccc' failed
make[2]: *** [gnuradio-core/src/tests/benchmark_dotprod_ccc] Error 1
CMakeFiles/Makefile2:1111: recipe for target 'gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/all' failed
make[1]: *** [gnuradio-core/src/tests/CMakeFiles/benchmark_dotprod_ccc.dir/all] Error 2
Makefile:147: recipe for target 'all' failed

这通常是您系统上已安装的不同版本的 GNU Radio 的问题。所以请确保事先apt-get remove gnuradio

如您所写:

Solved by using GNURadio 3.7.5 + gr3.7 branch of osmotetra.

如果没有必要,您不应该使用 GNU Radio pre-3.7;因为 osmo-tetra 有一个 gr3.7 分支,可以与最新的 GNU Radio 一起使用,所以去吧。