OpenSSL 을 임베디드 리눅스용으로 크로스 컴파일하기
- 개발/임베디드 리눅스
- 2020. 1. 31.
반응형
본 글에서는 오픈소스인 OpenSSL을 임베디드 리눅스용으로 크로스 컴파일하는 방법을 설명한다.
본 글에 사용된 크로스 컴파일 환경은 다음과 같다.
- OpenSSL 1.1.1d 버전
- 호스트 PC : 우분투 리눅스 (14.04 이후 버전)
- 타겟 장치 : ARM 기반 하드웨어 플랫폼, PPC 기반 하드웨어 플랫폼
- 크로스 컴파일러
- ARM : arm-linux-gnueabihf-
- PPC : powerpc-linux-gnu-
사전 필요 사항
호스트 PC에 각각의 크로스 컴파일러를 설치한다.
$ sudo apt update -y && sudo apt upgrade -y
$ sudo apt install build-essential gcc-arm-linux-gnueabihf libstdc++6-armhf-cross libc6-armhf-cross libc6-dev-armhf-cross binutils-arm-linux-gnueabihf linux-libc-dev-armhf-cross gcc-powerpc-linux-gnu
OpenSSL 다운로드
호스트 PC의 웹 브라우저를 통해 openssl 홈페이지에서 OpenSSL-1.1.1 버전을 다운로드한다.
혹은 터미널에서 wget 명령을 이용하여 압축 파일을 다운로드한 후 압축을 해제한다.
HOST$ sudo apt install wget
HOST$ wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz
HOST$ tar zxf openssl-1.1.1d.tar.gz
HOST$ cd openssl-1.1.1d
OpenSSL 크로스 컴파일
ARM 플랫폼(리틀 엔디안)용으로 크로스 컴파일
호스트 PC에서 다음 명령으로 크로스 컴파일 한다.
$ make clean
$ ./Configure linux-generic32 shared -DL_ENDIAN
$ make depend CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib LD=arm-linux-gnueabihf-ld MAKEDEPPROG=arm-linux-gnueabihf-gcc PROCESSOR=ARM
$ make CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib LD=arm-linux-gnueabihf-ld MAKEDEPPROG=arm-linux-gnueabihf-gcc PROCESSOR=ARM
PPC 플랫폼(빅 엔디안)용으로 크로스 컴파일
호스트 PC에서 다음 명령으로 크로스 컴파일 한다.
$ make clean
$ ./Configure linux-generic32 shared -DB_ENDIAN
$ make depend CC=powerpc-linux-gnu-gcc AR=powerpc-linux-gnu-ar RANLIB=powerpc-linux-gnu-ranlib LD=powerpc-linux-gnu-ld MAKEDEPPROG=powerpc-linux-gnu-gcc PROCESSOR=PPC
$ make CC=powerpc-linux-gnu-gcc AR=powerpc-linux-gnu-ar RANLIB=powerpc-linux-gnu-ranlib LD=powerpc-linux-gnu-ld MAKEDEPPROG=powerpc-linux-gnu-gcc PROCESSOR=PPC
OpenSSL 크로스 컴파일 결과
빌드 성공 시, 주요 빌드 결과물은 다음 경로에 생성된다.
- 헤더파일 : openssl-1.1.1d/include/openssl/***.h
- 공유 오브젝트 파일 : openssl-1.1.1d/libcrypto.so.1.1, libssl.so.1.1
OpenSSL 기능을 사용하고자 하는 어플리케이션은 위 헤더 파일과 공유 오브젝트를 각각 인클루드, 링크하여 사용한다.
공유오브젝트 파일은 타겟 장치의 라이브러리 디렉터리(예: /lib/, /usr/lib/)에 다운로드 하여 사용한다.
x64/x86 리눅스 플랫폼용으로 빌드
x64/x86 리눅스 플랫폼용으로 빌드하는 방법은 다음 글을 참고한다.
2020/01/31 - [개발/OpenSSL] - OpenSSL - 다운로드 및 빌드 방법(x64/x86 리눅스 플랫폼)
'개발 > 임베디드 리눅스' 카테고리의 다른 글
ffmpeg 사용법 - 임베디드 플랫폼용으로 빌드하기 (0) | 2021.03.21 |
---|---|
JSMN(JSON parse library) 사용법 - 임베디드 플랫폼용으로 빌드하기 (0) | 2021.03.15 |
pps-tools 빌드하기 (0) | 2021.02.15 |
임베디드 리눅스 플랫폼에 DHCP 서버 구축하기 - udhcp (0) | 2020.04.09 |
임베디드 리눅스 장치에 GPS 모듈을 USB 로 연결하기 (0) | 2020.01.30 |
dfu-util을 임베디드 리눅스용으로 크로스 컴파일하기 (1) | 2020.01.30 |
GPS 모듈을 이용하여 시스템시각을 UTC 시간에 동기화하는 임베디드 장치 구성하기 (0) | 2020.01.30 |
libpcap/tcpdump 를 이용한 네트워크 패킷 수집 (0) | 2019.04.20 |