make: 找不到-lthrift

make: cannot find -lthrift

场景:我正在编译 GNuRadio(我正在对 GnuRadio 模块 qtgui 做一个非常简单的修改)"sudo make install" “/prefix/default/src/gnuradio/build”的内容。当我尝试编译时,收到此错误。

我以为我没有安装thrift,但我有。

有什么建议吗?

/usr/bin/ld: cannot find -lthrift
collect2: error: ld returned 1 exit status
make[2]: *** [gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/build.make:1182: gr-qtgui/lib/libgnuradio-qtgui-3.7.13.5.so.0.0.0] Error 1
make[1]: *** [CMakeFiles/Makefile2:12843: gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/all] Error 2
make: *** [Makefile:163: all] Error 2 ```

如果您不需要 gnuradio 的 ControlPort,您可以尝试在没有它的情况下重新编译,这样就不需要 thrift。转到 gnuradio 的构建目录,删除 CMakeCache.txt,然后使用 -DENABLE_CTRLPORT_THRIFT=OFF 参数删除 运行 cmake。

如果您需要 ControlPort,请将 grep "^THRIFT" CMakeCache.txt(从构建目录执行)的完整输出添加到您的问题中。

@Vasil 的回答是有效的,但我想分享我是如何解决这个问题的,以防其他人需要库来编译 gnuradio。我发现我们需要
libthrift-0.10.0 库。由于它在 Ubuntu 存储库中不可用,我从这里 (https://mirror.genesisadaptive.com/deepin/pool/main/t/thrift/) 安装了以下数据包:

  • libthrift-dev_0.10.0-1deepin_amd64
  • libthrift-c-glib0_0.10.0-1deepin_amd64
  • libthrift-c-glib-dev_0.10.0-1deepin_amd64
  • libthrift-0.10.0_0.10.0-1deepin_amd64