Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
Re: libcurl build from source with openssl
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Nir Azkiel via curl-library <curl-library_at_cool.haxx.se>
Date: Thu, 25 Feb 2021 00:24:30 +0200
Sure,
This is the cmake file for the libcurl:
include(ExternalProject)
message(STATUS "Building libcurl enabled")
set(CURL_FLAGS -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF
-DUSE_WIN32_LDAP=OFF -DHTTP_ONLY=ON -DCURL_ZLIB=OFF
-DCURL_DISABLE_CRYPTO_AUTH=ON -DCMAKE_USE_LIBSSH2=OFF -DBUILD_TESTING=OFF )
if (WIN32)
set(CURL_FLAGS ${CURL_FLAGS} -DCURL_STATIC_CRT=ON )
endif()
if (APPLE)
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_SECTRANSP=ON )
elseif(WIN32)
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_SCHANNEL=ON )
else()
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_OPENSSL=ON )
endif()
ExternalProject_Add(
libcurl
PREFIX libcurl
GIT_REPOSITORY "https://github.com/curl/curl.git"
GIT_TAG "2f33be817cbce6ad7a36f27dd7ada9219f13584c" # curl-7_75_0
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/libcurl
CMAKE_ARGS -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
-DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
-DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
-DCMAKE_CXX_STANDARD_LIBRARIES=${CMAKE_CXX_STANDARD_LIBRARIES}
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DANDROID_ABI=${ANDROID_ABI}
-DANDROID_STL=${ANDROID_STL} ${CURL_FLAGS}
UPDATE_COMMAND ""
PATCH_COMMAND ""
TEST_COMMAND ""
)
set(CURL_DEBUG_TARGET_NAME "libcurl-d")
set(CURL_RELEASE_TARGET_NAME "libcurl")
add_library(curl INTERFACE)
add_definitions(-DCURL_STATICLIB) # Mandatory for building libcurl as
static lib
target_include_directories(curl INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/include>)
# libcurl require ws2_32.lib for windows only
if (WIN32)
target_link_libraries(curl INTERFACE ws2_32.lib crypt32.lib)
else(NOT APPLE)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_package(OpenSSL REQUIRED)
target_link_libraries(curl INTERFACE OpenSSL::SSL OpenSSL::Crypto)
endif()
target_link_libraries(curl INTERFACE debug
${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/lib/${CURL_DEBUG_TARGET_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
target_link_libraries(curl INTERFACE optimized
${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/lib/${CURL_RELEASE_TARGET_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
on my application cmake I have this :
add_dependencies(rs-depth-quality libcurl)
target_link_libraries(rs-depth-quality curl)
The yellow line is in charge of adding the linkage to the curl dependency
The green line add the curl project with it's depedency to my application.
It works on Win /Linux /OSX without SSL, with the SSL addition it works on
Win but Linux and OSX complains about linkage errors .
Thanks
On Wed, Feb 24, 2021 at 11:13 PM Ray Satiro via curl-library <
curl-library_at_cool.haxx.se> wrote:
> On 2/24/2021 9:40 AM, Nir Azkiel via curl-library wrote:
>
> I got libcurl downloaded and build, I would like to add HTTPS support but
> I keep getting linkage errors.
>
> I added this flag to libcurl Externalproject_Add
> -DCMAKE_USE_OPENSSL=ON
>
> also I added link to ssl like this
>
> set(OPENSSL_USE_STATIC_LIBS TRUE)
> find_package(OpenSSL REQUIRED)
> target_link_libraries(curl INTERFACE OpenSSL::SSL OpenSSL::Crypto).
>
> I am using libcurl latest release : 7.75
>
> My configure step find the ssl package:
> Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.a (found version
> "1.0.2g")
> I keep getting linkage errors like this:
>
> ../../libcurl/libcurl_install/lib/libcurl.a(openssl.c.o): In function `ossl_log_tls12_secret':
> 3703/home/travis/build/Nir-Az/librealsense/build/third-party/libcurl/lib/vtls/openssl.c:270: undefined reference to `SSL_get_session'
> 3704../../libcurl/libcurl_install/lib/libcurl.a(openssl.c.o): In function `ossl_strerror':
> 3705/home/travis/build/Nir-Az/librealsense/build/third-party/libcurl/lib/vtls/openssl.c:354: undefined reference to `ERR_error_string_n'
>
>
> ERR_error_string_n is in libcrypto so I think your project is not
> including it. Maybe it is the INTERFACE dependency specification? OTOH we
> are a bit unfamiliar with cmake. Can you give us a minimal sample cmake
> project that can be used to reproduce?
>
>
> -------------------------------------------------------------------
> Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
> Etiquette: https://curl.se/mail/etiquette.html
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html
Received on 2021-02-24
Date: Thu, 25 Feb 2021 00:24:30 +0200
Sure,
This is the cmake file for the libcurl:
include(ExternalProject)
message(STATUS "Building libcurl enabled")
set(CURL_FLAGS -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF
-DUSE_WIN32_LDAP=OFF -DHTTP_ONLY=ON -DCURL_ZLIB=OFF
-DCURL_DISABLE_CRYPTO_AUTH=ON -DCMAKE_USE_LIBSSH2=OFF -DBUILD_TESTING=OFF )
if (WIN32)
set(CURL_FLAGS ${CURL_FLAGS} -DCURL_STATIC_CRT=ON )
endif()
if (APPLE)
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_SECTRANSP=ON )
elseif(WIN32)
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_SCHANNEL=ON )
else()
set(CURL_FLAGS ${CURL_FLAGS} -DCMAKE_USE_OPENSSL=ON )
endif()
ExternalProject_Add(
libcurl
PREFIX libcurl
GIT_REPOSITORY "https://github.com/curl/curl.git"
GIT_TAG "2f33be817cbce6ad7a36f27dd7ada9219f13584c" # curl-7_75_0
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/libcurl
CMAKE_ARGS -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
-DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
-DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
-DCMAKE_CXX_STANDARD_LIBRARIES=${CMAKE_CXX_STANDARD_LIBRARIES}
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DANDROID_ABI=${ANDROID_ABI}
-DANDROID_STL=${ANDROID_STL} ${CURL_FLAGS}
UPDATE_COMMAND ""
PATCH_COMMAND ""
TEST_COMMAND ""
)
set(CURL_DEBUG_TARGET_NAME "libcurl-d")
set(CURL_RELEASE_TARGET_NAME "libcurl")
add_library(curl INTERFACE)
add_definitions(-DCURL_STATICLIB) # Mandatory for building libcurl as
static lib
target_include_directories(curl INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/include>)
# libcurl require ws2_32.lib for windows only
if (WIN32)
target_link_libraries(curl INTERFACE ws2_32.lib crypt32.lib)
else(NOT APPLE)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_package(OpenSSL REQUIRED)
target_link_libraries(curl INTERFACE OpenSSL::SSL OpenSSL::Crypto)
endif()
target_link_libraries(curl INTERFACE debug
${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/lib/${CURL_DEBUG_TARGET_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
target_link_libraries(curl INTERFACE optimized
${CMAKE_CURRENT_BINARY_DIR}/libcurl/libcurl_install/lib/${CURL_RELEASE_TARGET_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
on my application cmake I have this :
add_dependencies(rs-depth-quality libcurl)
target_link_libraries(rs-depth-quality curl)
The yellow line is in charge of adding the linkage to the curl dependency
The green line add the curl project with it's depedency to my application.
It works on Win /Linux /OSX without SSL, with the SSL addition it works on
Win but Linux and OSX complains about linkage errors .
Thanks
On Wed, Feb 24, 2021 at 11:13 PM Ray Satiro via curl-library <
curl-library_at_cool.haxx.se> wrote:
> On 2/24/2021 9:40 AM, Nir Azkiel via curl-library wrote:
>
> I got libcurl downloaded and build, I would like to add HTTPS support but
> I keep getting linkage errors.
>
> I added this flag to libcurl Externalproject_Add
> -DCMAKE_USE_OPENSSL=ON
>
> also I added link to ssl like this
>
> set(OPENSSL_USE_STATIC_LIBS TRUE)
> find_package(OpenSSL REQUIRED)
> target_link_libraries(curl INTERFACE OpenSSL::SSL OpenSSL::Crypto).
>
> I am using libcurl latest release : 7.75
>
> My configure step find the ssl package:
> Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.a (found version
> "1.0.2g")
> I keep getting linkage errors like this:
>
> ../../libcurl/libcurl_install/lib/libcurl.a(openssl.c.o): In function `ossl_log_tls12_secret':
> 3703/home/travis/build/Nir-Az/librealsense/build/third-party/libcurl/lib/vtls/openssl.c:270: undefined reference to `SSL_get_session'
> 3704../../libcurl/libcurl_install/lib/libcurl.a(openssl.c.o): In function `ossl_strerror':
> 3705/home/travis/build/Nir-Az/librealsense/build/third-party/libcurl/lib/vtls/openssl.c:354: undefined reference to `ERR_error_string_n'
>
>
> ERR_error_string_n is in libcrypto so I think your project is not
> including it. Maybe it is the INTERFACE dependency specification? OTOH we
> are a bit unfamiliar with cmake. Can you give us a minimal sample cmake
> project that can be used to reproduce?
>
>
> -------------------------------------------------------------------
> Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
> Etiquette: https://curl.se/mail/etiquette.html
-- *ניר אזקיאלNir Azkiel*
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html
Received on 2021-02-24