2015-11-26 2 views
-1

Попытка построить Apache Thrift на Fedora 23 от источника в the official git repository завершается с сообщением «не может найти библиотеку ... или необработанное аргумент» ошибка:Почему здание Apache Thrift терпит неудачу с ошибкой: не может найти библиотеку?

... 
make[5]: Entering directory '/home/ssouth/Source/Apache Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/test' 
/bin/sh ../../../libtool --tag=CXX --mode=link g++ -Wall -Wextra -pedantic -g -O2 -std=c++11 -L/usr/lib64 -o Benchmark Benchmark.o libtestgencpp.la -lssl -lcrypto -lrt -lpthread 
libtool: error: cannot find the library 'Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/libthrift.la' or unhandled argument 'Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/libthrift.la' 
Makefile:1049: recipe for target 'Benchmark' failed 
make[5]: *** [Benchmark] Error 1 
make[5]: Leaving directory '/home/ssouth/Source/Apache Thrift/git-wip-us.apache.org/repos/asf/thrift/lib/cpp/test' 
Makefile:947: recipe for target 'all' failed 
... 

Но файл libthrift.la построен и присутствует в файловой системе , Повторный запуск configure с опцией --without-tests не помогает. Как я могу правильно построить Trrift?

ответ

2

Это связано с ограничением libtool: оно неправильно обрабатывает пробелы в именах путей. Здесь вы поместили исходный код в подпапку «Apache Thrift», и, внимательно прочитав вывод, вставленный выше, вы можете увидеть, что имя папки некорректно разбито в пространстве, которое оно содержит.

Самое простое решение - переименовать эту папку, чтобы удалить пробел. После этого, вам нужно запустить

make distclean 
./bootstrap.sh 

, чтобы убедиться, что все необходимые файлы будут обновлены до повторного запуска make.