Ошибка создания libtool build 0.9.1 на Ubuntu 13.04

Построение экономии 0.9.1 (поддержка C, С++, java, С#, perl, python) на Ubuntu 13.04 Я получаю эту ошибку.

./настроить прогон без каких-либо параметров, выполнить запуск без каких-либо параметров...

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
[email protected]:~/sw/thrift-0.9.1$ 

Ответы

Ответ 1

Несмотря на то, что это, по-видимому, является дефектом в tar файле 0.9.1, это не проблема в верхней части дерева, вытащенном через git с сегодняшнего дня.

Решение, если встретить эту проблему, - использовать более новую версию бережливости, получив исходное дерево непосредственно через git вместо загрузки tarball. Единственная разница в сборке - вам нужно будет запустить bootstrap.sh перед настройкой. Это хорошо документировано.

Обратите внимание на два дополнительных полезных бита данных:  1. Настроить строить - без тестов (Майк Джонсон ниже - спасибо)  2. Эта проблема исправлена ​​в выпуске 0.9.2 (Luke ниже - спасибо!)

Ответ 2

Сегодня я столкнулся с этой проблемой и "исправил" ее. Проблема в том, что ar (1) не может найти файлы .o в каталоге test/cpp/.libs. Я уверен, что в Makefile.am в test/cpp есть недостающая магия, но у меня нет ни терпения, ни automake-fu, чтобы исправить это.

Вместо этого я просто привязал файлы .o из test/cpp к test/cpp/.libs/. Это фиксирует сборку тестов С++.

cd thrift-0.9.1/test/cpp/.libs
for i in ../*.o; do echo $i; ln -s $i .; done

Ответ 3

Thrift был выпущен с этой компиляцией. Вместо этого вы можете пропустить компиляцию тестов:

./configure --without-tests

Ответ 4

Вы также можете попробовать следующее:

./configure 
(cd test/cpp; ln -s . .libs)
make install

Это будет просто ссылка .libs обратно на test/cpp. "ar" найдет там файлы.

Ответ 5

Дэвид 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 

(кредит идет эти полезные инструкции, я только что заменил 0.9.1 на 0.9.2)

Ответ 6

Мне довелось столкнуться с этой проблемой. Вы можете попробовать cp all test/cpp/*. O в папку .libs.

Или вы можете пропустить компиляцию тестов.

cp test/cpp/*.o test/cpp/.libs/