在Ubuntu 13.04上构建thrift 0.9.1(支持C,C ++,java,C#,perl,python)我收到此错误。
./ configure run没有任何选项,make run没有任何选项......
Making all in test
make[2]: Entering directory `/home/dvb/sw/thrift-0.9.1/test'
Making all in nodejs
make[3]: Entering directory `/home/dvb/sw/thrift-0.9.1/test/nodejs'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/dvb/sw/thrift-0.9.1/test/nodejs'
Making all in cpp
make[3]: Entering directory `/home/dvb/sw/thrift-0.9.1/test/cpp'
Makefile:832: warning: overriding commands for target `gen-cpp/ThriftTest.cpp'
Makefile:829: warning: ignoring old commands for target `gen-cpp/ThriftTest.cpp'
/bin/bash ../../libtool --tag=CXX --mode=link g++ -Wall -g -O2 -L/usr/lib -o libtestgencpp.la ThriftTest_constants.lo ThriftTest_types.lo ../../lib/cpp/libthrift.la -lssl -lcrypto -lrt -lpthread
libtool: link: ar cru .libs/libtestgencpp.a .libs/ThriftTest_constants.o .libs/ThriftTest_types.o
ar: .libs/ThriftTest_constants.o: No such file or directory
make[3]: *** [libtestgencpp.la] Error 1
make[3]: Leaving directory `/home/dvb/sw/thrift-0.9.1/test/cpp'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/dvb/sw/thrift-0.9.1/test'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dvb/sw/thrift-0.9.1'
make: *** [all] Error 2
dvb@dvb-u13:~/sw/thrift-0.9.1$
答案 0 :(得分:12)
虽然这似乎是0.9.1版本tarball中的一个缺陷,但是在今天下午通过git引入的树顶部不是问题。
如果遇到此问题,解决方案是通过git直接获取源树而不是下载tarball来使用更新版本的thrift。构建的唯一区别是您需要在configure之前运行bootstrap.sh。这是有据可查的。
请注意另外两个有用的数据: 1.配置构建 - 不带测试(Mike Johnson下面 - 谢谢) 2.这个问题在0.9.2版本中得到修复(卢克在下面 - 谢谢!)
答案 1 :(得分:9)
今晚我遇到了这个问题并“修复”了它。问题是ar(1)在test / cpp / .libs目录中找不到.o文件。我确定在test / cpp中的Makefile.am中有一些缺失的魔法,但我没有耐心或者自动修复它。
相反,我只是将test / cpp中的.o文件符号链接到test / cpp / .libs /。这修复了C ++测试的构建。
cd thrift-0.9.1/test/cpp/.libs
for i in ../*.o; do echo $i; ln -s $i .; done
答案 2 :(得分:6)
此次编译问题后,Thrift被释放了。您可以选择跳过编译测试,而不是:
./configure --without-tests
答案 3 :(得分:3)
你也可以试试这个:
./configure
(cd test/cpp; ln -s . .libs)
make install
这只会将.libs链接回test / cpp。 “ar”会在那里找到文件。
答案 4 :(得分:1)
David V是正确的,0.9.1被打破,但0.9.2有效。构建指令似乎也是一个断开的链接。所以这里有一些适用于我的命令,来自一个全新的Ubuntu安装:
# Install java if you don't have it
sudo apt-get install default-jre
# install build dependencies
sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
cd /tmp
curl http://archive.apache.org/dist/thrift/0.9.2/thrift-0.9.2.tar.gz | tar zx
cd thrift-0.9.2/
./configure
make
sudo make install
#test that it can run
thrift --help
(功劳归于these有用的指示;我只是将0.9.1替换为0.9.2)
答案 5 :(得分:-1)
我碰巧遇到了这个问题。您可以尝试cp all test / cpp / * .o到.libs文件夹。
或者您可以跳过编译测试。
cp test/cpp/*.o test/cpp/.libs/