OpenSSL 을 임베디드 리눅스용으로 크로스 컴파일하기

반응형

본 글에서는 오픈소스인 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 버전을 다운로드한다.

 

/index.html

OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around th

www.openssl.org

혹은 터미널에서 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 리눅스 플랫폼)

 

댓글

Designed by JB FACTORY