为什么构建Apache Thrift失败了"错误:无法找到库"?

时间:2015-11-26 17:25:28

标签: thrift libtool

试图在Apache Thrift的源代码中在Fedora 23上构建the official git repository失败,而#34;找不到库...或者未处理的参数"错误讯息:

...
make[5]: Entering directory '/home/ssouth/Source/Apache Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/test'
/bin/sh ../../../libtool  --tag=CXX   --mode=link g++ -Wall -Wextra -pedantic -g -O2 -std=c++11 -L/usr/lib64  -o Benchmark Benchmark.o libtestgencpp.la -lssl -lcrypto -lrt -lpthread 
libtool:   error: cannot find the library 'Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/libthrift.la' or unhandled argument 'Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/libthrift.la'
Makefile:1049: recipe for target 'Benchmark' failed
make[5]: *** [Benchmark] Error 1
make[5]: Leaving directory '/home/ssouth/Source/Apache Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/test'
Makefile:947: recipe for target 'all' failed
...

但文件libthrift.la已构建并存在于文件系统中。使用configure选项重新启动--without-tests并不起作用。如何正确构建Thrift?

1 个答案:

答案 0 :(得分:2)

这是由于libtool的限制:它无法正确处理路径名中的空格。在这里,您已将源代码放在“Apache Thrift”的子文件夹中,通过仔细阅读上面粘贴的输出,您可以看到文件夹名称在其包含的空间中被错误地破坏。

最简单的解决方案是重命名此文件夹以删除空格。之后,你需要运行

make distclean
./bootstrap.sh

确保在重新运行make之前更新所有必需的文件。