c++ compilation thrift

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