임베디드 리눅스를 위해 크로스 컴파일러를 사용하여 OpenSSL 설치 방법

MD5 해시 코드 생성 함수를 찾다가 OpenSSL을 알게 되었습니다. OpenSSL을 처음 사용해 보는데, 매우 다양한 암호화 함수를 제공하는군요. MD5 해시 코드 덕분에 멋진 암호화 라이브러리를 알게 되었네요. OpenSSL을 i386 PC의 리눅스에서 사용한다면 간단히 설치할 수 있지만, 사용하는 프로세서에 따라 컴파일 환경이 바뀌는 임베디드 리눅스에서는 크로스 컴파일 환경에 맞추어 설치해 주어야 합니다. 이글은 i386 네이티브 컴파일 환경과 임베디드 리눅스를 위한 크로스 컴파일 환경에 맞추어 OpenSSL을 설치하는 방법을 설명합니다.

우선 OpenSSL 소스 파일을 내려 받아야 합니다. 프로그램 소스 파일은 https://www.openssl.org/source에서 제공합니다.

i386 리눅스 PC를 위한 OpenSSL 설치

i386 리눅스 PC에서 OpenSSL 라이브러리 설치는 간단합니다. config 실행 후에 빌드하면 끝입니다. 그러나 저는 임베디드 리눅스를 위한 크로스 컴파일 환경과 비슷하게 설치하고 싶어서, 일단 컴파일해서 만들어진 OpenSSL 라이브러리를 ~/temp/release에 만들어 놓고 네이티브 컴파일 환경에 맞추어 /usr에 복사하겠습니다.

wget을 이용하여 OpenSSL 소스 파일을 적당한 곳에서 내려 받습니다.

]$ wget https://www.openssl.org/source/openssl-1.0.1p.tar.gz

내려 받은 압축 파일을 풀기를 합니다.

]$ tar zxvf openssl-1.0.1p.tar.gz

소스 파일이 들어 있는 디렉터리로 이동합니다.

]$ cd openssl-1.0.1p

아래와 같이 config 를 실행합니다. ~/temp/release에 결과물이 생성되도록 하겠습니다.

]$ ./config --prefix=~/temp/release --openssldir=~/temp/release/openssl 


01_OpenSSL.png ▲ config가 작업 완료한 모습입니다. 컴파일하고 결과 파일을 생성하도록 합니다.

]$ make && make install


02_OpenSSL.png

▲ 빌드가 완료된 모습입니다. 생성된 파일이 있는 디렉터리로 이동합니다.

]$ cd ~/temp/release

/usr로 결과 파일을 복사합니다.

]$ sudo cp -a bin /usr
]$ sudo cp -a include /usr
]$ sudo cp -a lib /usr

이상으로 PC에 OpenSSL 라이브러리 설치가 완료되었습니다.

크로스 컴파일 환경을 위한 OpenSSL 설치 방법

이번에는 크로스 컴파일 환경을 위한 OpenSSL 설치 방법입니다. 소스 파일 내려 받기와 압축 풀기는 i386 PC와 같습니다.

]$ wget https://www.openssl.org/source/openssl-1.0.1p.tar.gz
]$ tar zxvf openssl-1.0.1p.tar.gz
]$ cd openssl-1.0.1p

크로스 컴파일러 중 SAMSUNG S5PV210 프로세서를 위한 arm-generic-linux-gnueabi-gcc를 사용한 예로 작성하겠습니다. 사용한 컴파일러는 에프에이리눅스(주)에서 제공하는 arm-linux-gnueabi-4.3.2.tar.gz입니다. 에프에이리눅스(주)의 arm-linux-gnueabi-4.3.2.tar.gz 파일은 루트 디렉터리에 풀기만 하면 크로스 컴파일러가 설치돼서 매우 편합니다.

크로스 컴파일러를 사용할 수 있도록 인수를 주어 config를 실행합니다.

]$ ./config --prefix=~/temp/release --openssldir=~/temp/release/openssl os/compiler:arm-generic-linux-gnueabi-gcc


03_OpenSSL.png

▲ config 실행이 완료된 모습입니다. 컴파일하고 결과 파일을 생성하도록 합니다.

]$ make && make install


04_OpenSSL.png

▲ 빌드가 완료된 화면입니다. 생성된 파일이 있는 디렉터리로 이동합니다.

]$ cd ~/temp/release

arm-generic-linux-gnueabi-gcc 컴파일러는 /usr/arm-generic-linux-gnueabi 디렉터리에 있으므로 이 곳으로 결과 파일을 복사합니다.

]$ sudo cp -a bin /usr/arm-generic-linux-gnueabi
]$ sudo cp -a include /usr/arm-generic-linux-gnueabi
]$ sudo cp -a lib /usr/arm-generic-linux-gnueabi

이상으로 크로스 컴파일 환경에 OpenSSL 라이브러리를 설치했습니다.