Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cross compiling of openssl for linux arm-v5te-linux-gnueabi toolchain

cross compiling of openssl for linux arm-v5te-linux-gnueabi toolchain. I have the version openssl-0.9.8r I tried

./Configure --prefix=/usr --openssldir=/usr/sbin threads zlib shared no-asm linux-armv4

export CROSS_COMPILE=arm-v5te-linux-gnueabi-

but no avail.

Im in much need of the basic steps to follow to crosscompile it to the openssl binary. I've already tried multiple suggestions across the links, hence in dire need to open a new question.

Please help

like image 543
buddy Avatar asked Mar 21 '13 03:03

buddy


2 Answers

This one works:

./Configure linux-generic32 shared  -DL_ENDIAN --prefix=/home --openssldir=/home
make CC=arm-v4t-linux-gnueabi-gcc RANLIB=arm-v4t-linux-gnueabi-ranlib LD=arm-v4t-linux-gnueabi-ld MAKEDEPPROG=arm-v4t-linux-gnueabi-gcc PROCESSOR=ARM
like image 147
buddy Avatar answered Oct 23 '22 06:10

buddy


I encountered the same problem and wrote a manual for how to cross compile openssl for arm. I hope this manual can give you some idea:

The process is quite straightforward. In this manual we will give an example for cross compiling OPENSSL for ARM architecture in an Ubuntu Linux System.

  1. Cross compiler

You will need The GNU C/C++ compiler for ARM architecture:

$ sudo apt-get install gcc-4.8-arm-linux-gnueabihf g++-4.8-arm-linux-gnueabihf

  1. openssl source code (version 1.1.1)

The openssl we will build is available at https://github.com/openssl/openssl

$ git clone https://github.com/openssl/openssl.git

  1. Configuration

Navigate into the openssl folder, and execute ./configure as follows:

$ ./Configure linux-armv4 --prefix=/usr/local/openssl/ --openssldir=/usr/local/openssl shared

This configuration sets the target platform linux-armv4 which is the only available ARM platform supported by this openssl. --prefix=/usr/local/openssl tells where to put the installation files. --openssldir=/usr/local/openssl defines the root directory of the openssl installation. shared makes the compiler to generate .so library files. The document INSTALL under folder openssl contains the parameters for ./Configure.

  1. Compilation

$ make CC=arm-linux-gnueabihf-gcc-4.8

CC tells what cross-compiler to use. The default compiler is gcc.

  1. Installation

$ make install

  1. Output

After installation, you will find the following files and folders under /usr/local/openssl

$ ls /usr/local/openssl

bin

ct_log_list.cnf

include

misc

openssl.cnf.dist

share certs

ct_log_list.cnf.dist

lib

openssl.cnf

private

  1. End

make sure the executable binaries are built for ARM:

$ file /usr/local/openssl/bin/openssl

install-arm/bin/openssl: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=a23306c9c8bd553183fc20a37a60dcac8291da91, not stripped

If you see something similar as what is shown above, you have successfully cross-compiled the openssl for the ARM system.

like image 31
Bing Avatar answered Oct 23 '22 06:10

Bing