OpenSSL 을 정적 으로 컴 파일 하고 CMake 제3자 라 이브 러 리 로 사용 합 니 다.
3816 단어 openssl
현재 환경 과 충돌 하지 않도록 Docker 에 용기(미 러)를 만 들 고 Ubuntu 18.04 시스템 을 사용 합 니 다.
docker pull ubuntu
docker run -it ubuntu bash
구축 키 트 설치
apt update
apt install build-essential
openssl 1.1.0h 가 져 오기.1.1.0 은 현재 안정 버 전 입 니 다.
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
컴 파일 매개 변수
./Configure linux-x86_64 --prefix=/tmp/openssl
--openssldir=/tmp/openssl/ no-weak-ssl-ciphers enable-ec_nistp_64_gcc_128
gcc 128 비트 옵션 을 사용 하려 면 다음 명령 의 결과 에서 사용 여 부 를 결정 해 야 합 니 다.
gcc -dM -E -
CMake 제3자 패키지 컴 파일
include(ExternalProject)
### OpenSSL 1.1.0h
ExternalProject_Add(OpenSSL PREFIX openssl
URL ${CMAKE_CURRENT_SOURCE_DIR}/openssl-1.1.0h.tar.gz
URL_MD5 5271477e4d93f4ea032b665ef095ff24
CONFIGURE_COMMAND ./Configure linux-x86_64 --prefix= --openssldir=/lib/ssl
no-weak-ssl-ciphers enable-ec_nistp_64_gcc_128 no-shared
BUILD_IN_SOURCE 1)
ExternalProject_Get_Property(OpenSSL INSTALL_DIR)
set(OPENSSL_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
set(OPENSSL_LINK_DIRECTORIES ${INSTALL_DIR}/lib)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
add_library(openssl-crypto-static STATIC IMPORTED GLOBAL)
set_property(TARGET openssl-crypto-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libcrypto.a)
set_property(TARGET openssl-crypto-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
add_library(openssl-ssl-static STATIC IMPORTED GLOBAL)
set_property(TARGET openssl-ssl-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libssl.a)
set_property(TARGET openssl-ssl-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
같은 프로젝트 에 속 하 는 다른 패키지 에 주의 하 십시오.예 를 들 어 OpenSSL 을 사용 하면 이 버 전의 라 이브 러 리 파일,헤더 파일 을 연결 해 야 합 니 다.운영 체제 가 자체 적 으로 가지 고 있 는 OpenSSL 을 사용 하 는 것 이 아 닙 니 다.예 를 들 어 libevent.
ExternalProject_Add(libevent PREFIX libevent
URL ${CMAKE_CURRENT_SOURCE_DIR}/libevent-2.1.8-stable.tar.gz
URL_MD5 f3eeaed018542963b7d2416ef1135ecc
CONFIGURE_COMMAND ./configure --prefix= --disable-shared
BUILD_COMMAND make "CPPFLAGS=-I${OPENSSL_INCLUDE_DIRECTORIES}" "LDFLAGS=-L${OPENSSL_LINK_DIRECTORIES} -ldl"
BUILD_IN_SOURCE 1)
ExternalProject_Get_Property(libevent INSTALL_DIR)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
add_library(libevent-static STATIC IMPORTED GLOBAL)
set_property(TARGET libevent-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libevent.a)
set_property(TARGET libevent-static PROPERTY IMPORTED_INTERFACE_LINK_LIBRARIES pthread crypto)
set_property(TARGET libevent-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
add_library(libevent-static-openssl STATIC IMPORTED GLOBAL)
set_property(TARGET libevent-static-openssl PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libevent_openssl.a)
set_property(TARGET libevent-static-openssl PROPERTY IMPORTED_INTERFACE_LINK_LIBRARIES pthread crypto)
set_property(TARGET libevent-static-openssl PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
add_library(libevent-static-pthreads STATIC IMPORTED GLOBAL)
set_property(TARGET libevent-static-pthreads PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libevent_pthreads.a)
set_property(TARGET libevent-static-pthreads PROPERTY IMPORTED_INTERFACE_LINK_LIBRARIES pthread crypto)
set_property(TARGET libevent-static-pthreads PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
컴 파일,링크 할 때 정적 컴 파일 된 OpenSSL 을 사용 할 수 있 도록 CPPFLAGS,LDFLAGS 가 추가 되 었 습 니 다.
참고 문헌
Ubuntu 에 새 OpenSSL 패키지 설치
Compilation and Installation - OpenSSLWiki
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure IoT Hub에 openssl로 만든 X.509 인증서를 사용하여 mosquitto로 연결Azure IoT Hub에 openssl로 자체 제작한 X.509 인증서를 사용하여 연결할 수 있었으므로 메모입니다. 대칭 키가 아닌 X.509 CA 서명된 인증서로 IoT Hub에 연결하고 싶습니다. 이런 튜토리얼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.