Difference between revisions of "Cross compiling standalone packages for the camera"

From ElphelWiki
Jump to: navigation, search
(Setting environment variables)
Line 26: Line 26:
 
  export CXX=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-g++
 
  export CXX=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-g++
 
  export CPP=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-cpp
 
  export CPP=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-cpp
 +
export AR=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-ar
 +
export RANLIB=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-ranlib
 
   
 
   
 
  # options
 
  # options

Revision as of 20:05, 19 June 2010

This procedure is intended to

  • test software before including it in the cvs,
  • to build software that would be too big to fit into the firmware image,
  • to build standalone packages you just dont want to include into the firmware image.

First

ELPHEL_SOURCEDIR and TOOLCHAIN values below are installation dependent, check if it match yours.

Setting environment variables

You must source init_env from the Elphel firmware source directory, eg:

ELPHEL_SOURCEDIR=/usr/local/src/elphel353-8.0.7/elphel353
cd $ELPHEL_SOURCEDIR
source init_env

and set the following variables:

# toolchain
TOOLCHAIN=/usr/local/cris
export PATH=/usr/local/crisv32/bin:$PATH 
export PATH=${TOOLCHAIN}/crisv32-axis-linux-gnu/bin:$PATH 
export PATH=${TOOLCHAIN}/bin:$PATH 

# binaries
export CC=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-gcc
export CXX=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-g++
export CPP=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-cpp
export AR=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-ar
export RANLIB=${TOOLCHAIN}/bin/crisv32-axis-linux-gnu-ranlib

# options
export CFLAGS=-I${TOOLCHAIN}/include
export CFLAGS="${CFLAGS} -I${TOOLCHAIN}/crisv32-axis-linux-gnu/sys-include"
export CXXFLAGS=${CFLAGS}
export CPPFLAGS=${CFLAGS}
export LDFLAGS=-L${TOOLCHAIN}/lib
export LDFLAGS="${LDFLAGS} -L${TOOLCHAIN}/crisv32-axis-linux-gnu/lib/"

# user includes and libraries
export LDFLAGS="${LDFLAGS} -L/usr/local/crisv32/lib"
export CFLAGS="${CFLAGS} -I/usr/local/crisv32/include"
export CXXFLAGS=${CFLAGS}

(check ./configure --help and the Makefile to see if more is needed)

When the software is packaged using autoconf and automake

You normally just have to run:

./configure --host=crisv32-axis-linux-gnu --prefix=/usr/local/crisv32  [ other options ]
make
make install

When the software is not packaged using autoconf and automake

Edit the Makefile

Install the software on the camera

The first time, create a symbolic link for crisv32 directory in /usr/local, eg:

ssh root@cam ln -s . /usr/local/crisv32

Copy the software to the camera /usr/local directory, eg:

tar c /usr/local/crisv32/. | ssh root@cam tar xv -C /

(you may want to strip binaries and remove documentation before)

To run the software on the camera you may have to define:

export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH