[ELDK] openssl support in ELDK-5.3

Detlev Zundel dzu at denx.de
Tue Jan 22 23:20:51 CET 2013


Hello arun sharma,

> I have been trying to compile freeswitch for arm, found trouble in make
> with "openssl/crypto.h NOt found". It was used to be there in eldk4.2.
> Please suggest how to get through this?

This boils down to the fact that in ELDKs up to 4.x we were using the
provided rootfilesystem also together with the cross toolchain.  In
recent ELDKs, the toolchain is completely separate from the multiple
provided rootfilesystems.

So effectively the question is what packages are included in the tool
chain (actually in its "sysroot" directory) and if there is an easy way
to add that.

Luckily, at least the latter question can be answered easily.  In
ELDKs > 5.0 the toolchain contains an "opkg" implementation that can be used to
install a .ipk package into the cross development environment.

Here is an example using the armv7a toolchain:

  [dzu at pollux openssl]$ gcc -Wall -lssl -lcrypto -o ssl-demo ssl-demo.c

Ok, so natively the example compiles fine.

  [dzu at pollux openssl]$ eldk-switch -r 5.2 armv7a
  Setup for armv7a (using ELDK 5.2)
  [dzu at pollux openssl]$ ${CROSS_COMPILE}gcc -Wall -lssl -lcrypto -o ssl-demo ssl-demo.c
  ssl-demo.c:11:26: fatal error: openssl/rand.h: No such file or directory
  compilation terminated.
  [dzu at pollux openssl]$ 

That's exactly what you see - the ssl librarys are missing in the (sato)
Toolchain.

If you have the ipkg file for the openssl-dev, then you can install it
into the toolchain itself.  This looks like this:

  [dzu at pollux openssl]$ type opkg-cl
  opkg-cl is /opt/eldk-5.2/armv7a/sysroots/i686-eldk-linux/usr/bin/opkg-cl
  [dzu at pollux openssl]$

Ok, so this is the "opkg-cl" tool that runs natively.

  [dzu at pollux openssl]$ sudo /opt/eldk-5.2/armv7a/sysroots/i686-eldk-linux/usr/bin/opkg-cl --force-depends -o /opt/eldk-5.2/armv7a/sysroots/armv7a-vfp-neon-linux-gnueabi/ -f /opt/eldk-5.2/armv7a/sysroots/armv7a-vfp-neon-linux-gnueabi/etc/opkg.conf install /tmp/openssl-dev_1.0.0j-r15.3_armv7a-vfp-neon.ipk 
  [sudo] password for dzu: 
  Upgrading openssl-dev on root from 1.0.0h-r15.1 to 1.0.0j-r15.3...
  openssl-dev: unsatisfied recommendation for libssl-dev
  openssl-dev: unsatisfied recommendation for libcrypto-dev
  Collected errors:
   * satisfy_dependencies_for: Cannot satisfy the following dependencies for openssl-dev:
   * openssl (= 1.0.0j-r15.3) * 
  [dzu at pollux openssl]$ ${CROSS_COMPILE}gcc -Wall -lssl -lcrypto -o ssl-demo ssl-demo.c 
  [dzu at pollux openssl]$ 

Note that there the "-o" option to opkg-cl is needed to tell it the
location of the sysroot directory it should install to.  One also needs
to specify "-f" with the corresponding opkg.conf file (otherwise it will
find a config file that does not specify armv7a architecture for
packages).  Maybe somewhere in the future these options are compiled in
as default into the opkg-cl binary, but until then the command line will
be long, sorry.  For this example I also override the dependency check
just to show that the package can be installed.

Now for the more problematic facts of this procedure - the .ipk files
are currently not hosted on our ftp server as this would use up too much
disk space for all thearchitectures, so you need to generate this
yourself by compiling the eldk from scratch (see
http://www.denx.de/wiki/view/ELDK-5/EldkBuilding).  It is also
neccessary that the packages generated fit the toolchain tarball as the
sysroot hierarchy in the toolchain contains an opkg "packages" file with
md5sums of the package files.  If those things do not match, you will
see something like this:

  Collected errors:
   * opkg_install_pkg: Package openssl-dev md5sum mismatch. Either the opkg or the package index are corrupt. Try 'opkg update'.
   * opkg_install_cmd: Cannot install package openssl-dev.

That's why I used eldk 5.2 above because this is an installation that I
have the fitting .ipkg files for ;)

Ok, I hope I could shed some light on the current procedure to
arbitrarily extend the cross compilation environment.

Best wishes
  Detlev

-- 
Der Kluge tue gleich anfangs, was der Dumme erst am Ende.
                                    --- Baltasar Gracian
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the eldk mailing list