Ошибка создания 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/