【问题标题】:GNU Radio, debian compilation errorGNU Radio,debian 编译错误
【发布时间】:2016-05-17 20:30:20
【问题描述】:

尝试在最新的 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 是 C++,而不是 C。删除了 c,但添加了 building
  • 您确定需要 GNU Radio 3.6.5 吗?只有旧的遗留代码才需要它。较新的 GNU Radio 3.7.* 有一些不同的 API,但更好用!
  • osmocom-tetra 需要 3.6.5
  • 不要那样做。使用 Osmocom-tetra 的 gr3.7 分支,它使用 GNU Radio 3.7,因此没有死。
  • 感谢 Marcus,解决方案完美运行;)

标签: linux gcc building gnuradio


【解决方案1】:

正如你所写:

使用 GNURadio 3.7.5 + osmotetra 的 gr3.7 分支解决。

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

【讨论】:

    【解决方案2】:

    这通常是您系统上已安装的不同版本 GNU Radio 的问题。所以请务必提前apt-get remove gnuradio

    【讨论】:

    • 我已经完全安装了旧版本的 gnuradio 和所有库。同样的错误:
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2022-01-24
    相关资源
    最近更新 更多