c++ - error libtool construyendo thrift 0.9.1 en Ubuntu 13.04
compilation (6)
David V tiene razón en que 0.9.1 está roto pero 0.9.2 funciona. Las instrucciones de construcción parecen ser un enlace roto también. Así que aquí están los comandos que funcionaron para mí, desde una instalación nueva de 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
(El crédito va a these instrucciones útiles; acabo de reemplazar 0.9.1 con 0.9.2)
Generando ahorro 0.9.1 (soporte C, C ++, java, C #, perl, python) en Ubuntu 13.04 Estoy recibiendo este error.
./configure ejecutar sin ninguna opción, hacer ejecutar sin ninguna opción ...
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$
Me encontré con este problema esta noche y lo "arreglé". El problema es que ar (1) no puede encontrar los archivos .o en el directorio test / cpp / .libs. Estoy seguro de que falta algo de magia en Makefile.am en test / cpp, pero no tengo ni la paciencia ni el autoforme para solucionarlo.
En su lugar, simplemente vinculé los archivos .o de test / cpp a test / cpp / .libs /. Eso corrige la compilación de las pruebas de C ++.
cd thrift-0.9.1/test/cpp/.libs
for i in ../*.o; do echo $i; ln -s $i .; done
Me encontré con este problema. Puede probar cp all test / cpp / *. O to .libs folder.
O puede omitir la compilación de pruebas.
cp test/cpp/*.o test/cpp/.libs/
Si bien esto parece ser un defecto en el lanzamiento de la versión 0.9.1, no es un problema en la parte superior del árbol extraído a través de git a partir de esta tarde.
La solución si se encuentra con este problema es usar una versión más nueva de thrift obteniendo el árbol de origen directamente a través de git en lugar de descargar el archivo comprimido. La única diferencia en la compilación es que deberá ejecutar bootstrap.sh antes de configurar. Esto está bien documentado.
Tenga en cuenta dos bits de datos útiles adicionales: 1. Configure para compilar - sin pruebas (Mike Johnson a continuación - gracias) 2. Este problema se solucionó en la versión 0.9.2 (Luke a continuación - ¡gracias!)
También puedes probar esto:
./configure
(cd test/cpp; ln -s . .libs)
make install
Esto simplemente vinculará .libs de nuevo a test / cpp. "ar" encontrará los archivos allí.
Thrift fue puesto en libertad con este problema de compilación. Puede optar por omitir las pruebas de compilación, en su lugar:
./configure --without-tests