, поэтому я пытаюсь скомпилировать мою программу, которая покоится как зависимость. я уже скомпилированные restbed с помощью следующей команды:Ошибка компоновщика с помощью обложки
cmake -DBUILD_TESTS=NO -DBUILD_SSL=YES -DBUILD_SHARED=NO
make -j4 install
Компиляция restbed не приводит каких-либо ошибок.
Теперь проблема:
Я использую исходный код примера здесь: https://github.com/Corvusoft/restbed
Это мой CMakeLists:
cmake_minimum_required (VERSION 2.6)
project(FDRService CXX)
# Setup
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BINARY_DIR "./build")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
# FD Variables
set(FDRService_VERSION_MAJOR 1)
set(FDRService_VERSION_MINOR 0)
set(FDRService_INCLUDE_DIR "./include")
set(FDRService_SOURCE_DIR "./src")
# RestBED
set(RESTBED_ROOT "dependency/restbed/distribution")
set(RESTBED_INCLUDE_DIR "${RESTBED_ROOT}/include")
set(RESTBED_LIBRARY_DIR "${RESTBED_ROOT}/library")
# find all libraries
file(GLOB_RECURSE RESTBED_LIBRARY_FILES
"${RESTBED_LIBRARY_DIR}/*.a"
)
include_directories(${RESTBED_INCLUDE_DIR})
# find project source files
file(GLOB_RECURSE FDRService_FILES
"${FDRService_INCLUDE_DIR}/*.h"
"${FDRService_INCLUDE_DIR}/*.hpp"
"${FDRService_SOURCE_DIR}/*.c"
"${FDRService_SOURCE_DIR}/*.cpp"
)
add_executable(FDRService ${FDRService_FILES})
target_link_libraries(FDRService ${RESTBED_LIBRARY_FILES})
Когда я пытаюсь скомпилировать мой проект я получаю следующие ошибки компоновщика:
http://pastebin.com/hXPmAV2W (слишком много текста для StackOverflow ...)
Мое предположение заключается в том, что библиотека OpenSSL не связана с статическим файлом .a, но я поместил -DBUILD_SSL в команду сборки.
Я надеюсь, что кто-то из вас может помочь мне с этой проблемой. Это сводит меня с ума.
Если вам нужна дополнительная информация, просто скажите мне, и я отредактирую эту запись.
«Мое предположение». Это похоже на 100% уверенную ставку. Вы уверены, что знаете, что делает '-DBUILD_SSL'? –
Линкер не находит эти символы, потому что библиотеки, в которых они проживают, не были указаны ему. При быстром просмотре ошибок, похоже, вам нужно передать '-lpthread -lcrypto -lssl' в компоновщик (конечно, 3 библиотеки должны находиться в' LD_LIBRARY_PATH'). Не уверен, как перевести это в синтаксисе _cmake_. – CristiFati
Ну, я не думал добавлять лишние библиотеки, глупый ... Спасибо. он работает сейчас – Hibbel