2013-09-05 7 views
16

Building Sparsamkeit 0.9.1 (Unterstützung C, C++, Java, C#, Perl, Python) auf Ubuntu 13.04 Ich erhalte diesen Fehler.libtool Fehlerbildung Sparsamkeit 0.9.1 auf Ubuntu 13.04

configure laufen ohne Optionen, machen läuft ohne Optionen ...

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

wenn ohne C++ Unterstützung konfiguriert (./configure -with-cpp = no) Läufe erfolgreich abschließen. Dies scheint ein Pfadproblem in Bezug auf Libtool zu sein; ThriftTest_constants.o ist vorhanden. –

+1

Das gleiche Problem auf Ubuntu 13.10. Gelöst durch Entfernen der C++ - Unterstützung wie oben beschrieben. –

Antwort

12

Während dies ein Defekt in dem 0.9.1 Release-Tarball zu sein scheint, ist es kein Problem, in der Spitze von Baum gezogen über Git seit diesem Nachmittag.

Die Lösung, wenn dieses Problem auftritt, besteht darin, eine neuere Version der Sparsamkeit zu verwenden, indem der Quellbaum direkt über Git abgerufen wird, anstatt den Tarball herunterzuladen. Der einzige Unterschied beim Build besteht darin, dass Sie bootstrap.sh vor der Konfiguration ausführen müssen. Dies ist gut dokumentiert.

Hinweis zwei weitere hilfreiche Daten-Bits: 1. Konfigurieren --without-Tests (Mike Johnson unten - Dank) bauen 2. Dieses Problem wird in 0.9.2 Release

(Lk unten- Dank!)
+0

wo ist das gut dokumentiert? weil ich im Moment nichts darüber finden kann, was ich nach dem Herunterladen von tar.gz mit Sparsamkeit tun soll, ich muss konfigurieren und machen, dann habe ich das selbe Problem wie du, aber ich starte zuerst bootstrap und es ändert nichts – AngryDuck

+0

git clone https: //git-wip-us.apache.org/repos/asf/thrit.git Sparsamkeit; CD Sparsamkeit. Dann führen Sie Bootstrap und konfigurieren Sie wie Sie auf dem Tarball –

+0

gut dokumentiert hier: http: //thrift.apache.org/docs/BuildingFromSource/ –

9

Ich lief heute Abend in dieses Problem und "reparierte" es. Das Problem ist, dass ar (1) die .o-Dateien im Verzeichnis test/cpp/.libs nicht finden kann. Ich bin mir sicher, dass es in Makefile.am im Test/cpp einige fehlende Magie gibt, aber ich habe weder die Geduld noch den Automake-Fu, um das zu beheben.

Stattdessen habe ich nur die .o-Dateien von test/cpp zu test/cpp/.libs/symbolisiert. Das behebt den Build der C++ - Tests.

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

Sie können auch versuchen, diese:

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

Dies wird einfach verlinken .libs zurück zu Test/cav. "ar" findet die Dateien dort.

6

Thrift wurde seit diesem Kompilierproblem freigegeben. Sie können wählen, um kompilierende Tests zu überspringen, stattdessen:

./configure --without-tests 
-1

Ich zufällig auf dieses Problem. Sie können cp alle test/cpp/*. O in .libs-Ordner versuchen.

Oder Sie können kompilieren Tests überspringen.

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

Ich denke, es wäre hilfreich für die OP und weitere Besucher, wenn Sie einige Erläuterungen zu Ihrer Intention hinzufügen. – reporter

1

David V ist richtig, dass 0.9.1 gebrochen ist, aber 0.9.2 funktioniert. Die Bauanleitungen scheinen ebenfalls ein fehlerhafter Link zu sein. So sind hier die Befehle, die für mich gearbeitet, aus einer frischen Ubuntu installieren:

# 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 

(Kredit geht an these hilfreiche Anweisungen, Ich ersetzte 0.9.1 mit 0.9.2)