У меня возникла проблема при создании образца кода azure-iot-sdk-c с конфигурацией toolchain.cmake ниже.
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER arm-linux-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-g++)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CURL_INCLUDE_DIR /curl_path/include/)
SET(CURL_LIBRARY /curl_path/lib/libcurl.so)
Ниже приведена ошибка, которую я получаю на консоли:
/sysroot/bin/ld: cannot find -lcurl
Во время компиляции библиотек azure-sdk cmake принимает пути CURL_INCLUDE_DIR и CURL_LIBRARY, как и ожидалось. но во время создания примера кода, который присутствует в репозитории azure-sdk, это failing with -lcurl not found error
. Эта проблема связана с тем, что CMake ищет неправильный каталог (например, sysroot/usr/lib/
) вместо поиска в libcurl. так что внутри CURL_LIBRARY
передано из toolchain.cmake.
Как я могу заставить CMake
заглянуть в каталог CURL_LIBRARY
для связывания двоичных файлов примеров кода, чтобы решить эту проблему?
find_library()
или какую-либо другую команду для поиска библиотеки curl (которая может использовать или перезаписывать переменнуюCURL_LIBRARY
, которую вы определили)? Пожалуйста, покажите остальную часть вашего кода CMake. - person squareskittles   schedule 14.11.2019target_link_libraries()
или аналогичный. Если вашfind_package()
вызов запущен, переменнаяCURL_LIBRARIES
должна содержать путь к вашей библиотеке curl. - person squareskittles   schedule 15.11.2019make
журнал ошибок, версию CMake и т. Д. - person squareskittles   schedule 15.11.2019