Мне нужно включить библиотеку proxygen в мой проект. Все успешно установлено. Единственная проблема заключается в том, что в проекте есть ошибка связывания, которую я не могу решить.
ОС, в которой я работаю, — Ubuntu 14.04.
Вот журнал ошибок:
/home/cortana/clion-2016.1.3/bin/cmake/bin/cmake --build /home/cortana/.CLion2016.1/system/cmake/generated/string_from_url-a5f32588/a5f32588/Debug --target tutifruti -- -j 4
[ 33%] Linking CXX executable /home/cortana/ClionProjects/string_from_url/build/tutifruti
CMakeFiles/tutifruti.dir/src/main.cpp.o: In function `main':
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::HTTPConnector(proxygen::HTTPConnector::Callback*, folly::HHWheelTimer*)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:116: undefined reference to `proxygen::HTTPConnector::setPlaintextProtocol(std::string const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:126: undefined reference to `proxygen::HTTPConnector::connectSSL(folly::EventBase*, folly::SocketAddress const&, std::shared_ptr<folly::SSLContext> const&, ssl_session_st*, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&, std::string const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:134: undefined reference to `proxygen::HTTPConnector::connect(folly::EventBase*, folly::SocketAddress const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
CMakeFiles/tutifruti.dir/src/CurlClient.cpp.o: In function `CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)':
/home/cortana/ClionProjects/string_from_url/src/CurlClient.cpp:81: undefined reference to `proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)'
collect2: error: ld returned 1 exit status
make[3]: *** [/home/cortana/ClionProjects/string_from_url/build/tutifruti] Error 1
make[2]: *** [CMakeFiles/tutifruti.dir/all] Error 2
make[1]: *** [CMakeFiles/tutifruti.dir/rule] Error 2
make: *** [tutifruti] Error 2
Здесь библиотека успешно добавлена, но не может связать себя с этими упомянутыми заголовками. При проверке в Интернете я обнаружил, что мне нужно добавить двоичные файлы нужного заголовка (включая cpp).
Мой cmake до сих пор:
cmake_minimum_required(VERSION 2.8)
project(string_from_url)
find_package(Boost COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build)
find_package( OpenCV REQUIRED )
set(SOURCE_FILES src/main.cpp)
add_executable(tutifruti ${CMAKE_CURRENT_LIST_DIR}/src/main.cpp src/CurlClient.cpp)
target_link_libraries(tutifruti gflags)
target_link_libraries(tutifruti glog)
target_link_libraries(tutifruti folly)
target_link_libraries(tutifruti proxygenhttpserver)
target_link_libraries(tutifruti SDL2)
target_link_libraries(tutifruti GL)
target_link_libraries(tutifruti GLU)
target_link_libraries(tutifruti glut)
target_link_libraries(tutifruti GLEW)
target_link_libraries(tutifruti wangle)
target_link_libraries(tutifruti pthread)
target_link_libraries(tutifruti config++)
target_link_libraries(tutifruti opencv_core)
target_link_libraries(tutifruti opencv_highgui)
target_link_libraries(tutifruti opencv_imgproc)
target_link_libraries(tutifruti opencv_videoio)
target_link_libraries(tutifruti opencv_objdetect)
target_link_libraries(tutifruti ${OpenCV_LIBS})
target_link_libraries(tutifruti ${Boost_LIBRARIES})
Пожалуйста, помогите мне здесь: /
РЕДАКТИРОВАТЬ: вывод find / -name "*proxygenhttpserver*" -type f
:
find: `/sys/kernel/debug': Permission denied
find: `/etc/cups/ssl': Permission denied
find: `/etc/polkit-1/localauthority': Permission denied
find: `/etc/ssl/private': Permission denied
find: `/proc/tty/driver': Permission denied
find: `/proc/1/task/1/fd': Permission denied
find: `/proc/1/task/1/fdinfo': Permission denied
find: `/proc/1/task/1/ns': Permission denied
find: `/proc/1/fd': Permission denied
find: `/proc/1/map_files': Permission denied
find: `/proc/1/fdinfo': Permission denied
find: `/proc/1/ns': Permission denied
find: `/proc/2/task/2/fd': Permission denied
find: `/proc/2/task/2/fdinfo': Permission denied
find: `/proc/2/task/2/ns': Permission denied
find: `/proc/2/fd': Permission denied
find: `/proc/2/map_files': Permission denied
find: `/proc/2/fdinfo': Permission denied
find: `/proc/2/ns': Permission denied
find: `/proc/3/task/3/fd': Permission denied
find: `/proc/3/task/3/fdinfo': Permission denied
find: `/proc/3/task/3/ns': Permission denied
find: `/proc/3/fd': Permission denied
find: `/proc/3/map_files': Permission denied
find: `/proc/3/fdinfo': Permission denied
find: `/proc/3/ns': Permission denied
find: `/proc/5/task/5/fd': Permission denied
find: `/proc/5/task/5/fdinfo': Permission denied
find: `/proc/5/task/5/ns': Permission denied
find: `/proc/5/fd': Permission denied
find: `/proc/5/map_files': Permission denied
find: `/proc/5/fdinfo': Permission denied
find: `/proc/5/ns': Permission denied
find: `/proc/7/task/7/fd': Permission denied
find: `/proc/7/task/7/fdinfo': Permission denied
find: `/proc/7/task/7/ns': Permission denied
find: `/proc/7/fd': Permission denied
find: `/proc/7/map_files': Permission denied
find: `/proc/7/fdinfo': Permission denied
find: `/proc/7/ns': Permission denied
find: `/proc/8/task/8/fd': Permission denied
find: `/proc/8/task/8/fdinfo': Permission denied
find: `/proc/8/task/8/ns': Permission denied
find: `/proc/8/fd': Permission denied
find: `/proc/8/map_files': Permission denied
find: `/proc/8/fdinfo': Permission denied
find: `/proc/8/ns': Permission denied
find: `/proc/9/task/9/fd': Permission denied
find: `/proc/9/task/9/fdinfo': Permission denied
find: `/proc/9/task/9/ns': Permission denied
find: `/proc/9/fd': Permission denied
find: `/proc/9/map_files': Permission denied
find: `/proc/9/fdinfo': Permission denied
find: `/proc/9/ns': Permission denied
find: `/proc/10/task/10/fd': Permission denied
find: `/proc/10/task/10/fdinfo': Permission denied
find: `/proc/10/task/10/ns': Permission denied
find: `/proc/10/fd': Permission denied
find: `/proc/10/map_files': Permission denied
find: `/proc/10/fdinfo': Permission denied
find: `/proc/10/ns': Permission denied
find: `/proc/11/task/11/fd': Permission denied
find: `/proc/11/task/11/fdinfo': Permission denied
find: `/proc/11/task/11/ns': Permission denied
find: `/proc/11/fd': Permission denied
find: `/proc/11/map_files': Permission denied
find: `/proc/11/fdinfo': Permission denied
find: `/proc/11/ns': Permission denied
find: `/proc/12/task/12/fd': Permission denied
find: `/proc/12/task/12/fdinfo': Permission denied
find: `/proc/12/task/12/ns': Permission denied
find: `/proc/12/fd': Permission denied
find: `/proc/12/map_files': Permission denied
find: `/proc/12/fdinfo': Permission denied
find: `/proc/12/ns': Permission denied
find: `/proc/13/task/13/fd': Permission denied
find: `/proc/13/task/13/fdinfo': Permission denied
find: `/proc/13/task/13/ns': Permission denied
find: `/proc/13/fd': Permission denied
find: `/proc/13/map_files': Permission denied
find: `/proc/13/fdinfo': Permission denied
find: `/proc/13/ns': Permission denied
и многое другое.
proxygenhttpserver
? 2) На какой ОС вы работаете? - person devopsfun   schedule 21.06.2016find / -name "*proxygenhttpserver*" -type f
? - person devopsfun   schedule 21.06.2016Dockerfile
, предоставленным проектом, т.е. было бы то же самое, если бы я запускал команду./deps.sh && ./reinstall.sh
на обычной машине (с привилегиями sudo). После этого, когда я запускаю эту командуfind
, я нахожу статическую и общую библиотекуproxygenhttpserver
в/usr/local/lib
. На вашей машине так же? - person devopsfun   schedule 21.06.2016find
сsudo
, т.е.sudo find ...
- person devopsfun   schedule 21.06.2016facebook/proxygen
с github.com? Если да, то в части Installing написано, что для установки этого проекта надо запустить команду./deps.sh && ./reinstall.sh
. Если вам нужны библиотеки в системных каталогах, вы должны запустить эти команды какroot
/sudo
- person devopsfun   schedule 21.06.2016target_link_libraries
, находится в каталоге системной библиотеки. - person devopsfun   schedule 21.06.2016