2013-09-05 21 views
16

Oszczędności w budownictwie 0.9.1 (wsparcie C, C++, java, C#, perl, python) na Ubuntu 13.04 Otrzymuję ten błąd.Błąd w pisaniu libtool 0.9.1 na Ubuntu 13.04

./configure prowadzony bez żadnych opcji, należy uruchomić bez żadnych opcji ...

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$ 
+6

gdy skonfigurowany bez wsparcia C++ (./configure -with-cpp = no) sprawia, że ​​przebiegi zakończone pomyślnie. Wydaje się, że jest to problem związany ze ścieżką w odniesieniu do libtool; ThriftTest_constants.o jest obecny. –

+1

Ten sam problem w systemie Ubuntu 13.10. Rozwiązano przez usunięcie obsługi C++, jak podano powyżej. –

Odpowiedz

12

Choć wydaje się to być wada w 0.9.1 uwalnianiu archiwum, to nie jest to problem w górę drzewa ciągniętego przez git od tego popołudnia.

Rozwiązaniem, jeśli napotkasz ten problem jest użycie nowszej wersji oszczędzania przez pobranie drzewa źródłowego bezpośrednio przez git zamiast pobrania archiwum. Jedyną różnicą w kompilacji jest to, że będziesz musiał uruchomić bootstrap.sh przed skonfigurowaniem. Jest to dobrze udokumentowane.

Uwaga dwóch dodatkowych osób bitów danych: 1. Skonfiguruj zbudować --without-testów (Mike Johnson poniżej - dzięki) 2. Ten problem został rozwiązany w wydaniu 0.9.2

(Łk below- dzięki!)
+0

gdzie to jest dobrze udokumentowane? ponieważ w tej chwili nie mogę znaleźć nic o tym, co zrobić z oszczędzaniem po pobraniu tar.gz, muszę to skonfigurować i sprawić, że mam ten sam problem co ty, ale najpierw uruchamiam bootstrap i nic się nie zmienia – AngryDuck

+0

git clone https: //git-wip-us.apache.org/repos/asf/thrift.git thrift; oszczędzanie cd. Następnie uruchom bootstrap i skonfiguruj tak, jak to zrobiłeś na tarballu –

+0

dobrze udokumentowanym tutaj: http: //thrift.apache.org/docs/BuildingFromSource/ –

9

Wpadłem dziś na ten problem i "naprawiłem" go. Problem polega na tym, że ar (1) nie może znaleźć plików .o w katalogu test/cpp/.libs. Jestem pewien, że brakuje niektórych magii w Makefile.am w teście/cpp, ale nie mam ani cierpliwości, ani automake-fu, aby to naprawić.

Zamiast tego, po prostu dowiązałem symbolicznie pliki .o z testu/cpp do test/cpp/.libs /. To naprawia kompilację testów C++.

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

Możesz też spróbować:

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

To będzie po prostu odwołuje .libs powrotem do testu/CPP. "ar" znajdzie tam pliki.

6

Thrift został wydany po rozwiązaniu tego problemu. Zamiast tego możesz pominąć testowanie kompilacji:

./configure --without-tests 
-1

Zdarzyło mi się zmierzyć się z tym problemem. Możesz wypróbować cp wszystkie test/cpp/*. O do folderu .libs.

Można również pominąć testy kompilacji.

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

Myślę, że byłby bardziej przydatny dla OP i dalszych odwiedzających, gdy dodasz wyjaśnienie do swojego intencji. – reporter

1

David V ma rację, że 0.9.1 jest zepsuty, ale 0.9.2 działa. Instrukcje kompilacji również wydają się uszkodzonym łączem. Więc tutaj są komendy, które pracowały dla mnie, ze świeżej Ubuntu zainstalować:

# 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 

(zasługa these pomocnych wskazówek, po prostu zastąpić 0.9.1 z 0.9.2)