Debian CrossTools (armhf)

English

As of 21nd December, 2014, Debian MultiArch Cross Tools seems be working only on Jessie, which is bata 2 release.  Traditional Endebian environment seems no longer supported.  After half a day trial, I could get a point to build rdkit for linux/armhf on amd64 debian Jessie.

I've tested this procedure on Debian Jessie 8.0.0 (official release), 8th May 2015 8.3, 7th Feb., 2016

Update for Debian 9 (streatch)

Debian CrossTools installation

Reference: https://wiki.debian.org/CrossToolchains

sudo apt-get install build-essential
sudo dpkg --add-architecture armhf
dpkg --print-foreign-architectures
sudo -i
echo "deb http://emdebian.org/tools/debian/ jessie main" > /etc/apt/sources.list.d/crosstools.list
exit

As of 14th March 2015, I got error "Unmet dependenciy" while executing apt-get install crossbuild-essential-armhf, that was fixed by adding following line to sources.list)

sudo echo "deb http://ftp.debian.org/debian/ unstable main" >> /etc/apt/sources.list 
sudo apt-get install curl
curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add - 
sudo apt-get update 
sudo apt-get install crossbuild-essential-armhf

 

Install Boost-1.58 (cmake toolchain frendly)

Add your login accout to 'staff' group, which allows you to install cross libraries into /usr/local/ directory.

wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xvf ./bzip2-1.0.6.tar.gz -C ~/src

Create ~/user-config.jam as;

cat << EOT > ~/user-config.jam
using gcc : arm : arm-linux-gnueabihf-g++-4.9 : <cxxflags>"-std=c++11 -fPIC" ;
using python : 2.7 ;
EOT
mkdir -p src/armhf; cd src/armhf
wget http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download
tar xvf download
cd boost_1_58_0
./bootstrap.sh --prefix=/usr/local/arm-linux-gnueabihf/usr/local
./b2 toolset=gcc-arm -s BZIP2_SOURCE=~/src/bzip2-1.0.6 install

Toolchain.cmake file

Create "toolchain.cmake" as following;

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)

SET(CMAKE_C_COMPILER   arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

# where is the target local environment 
SET(CMAKE_FIND_ROOT_PATH  /opt/local/arm-linux-gnueabihf)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY BOTH)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY BOTH)

RDKit

 

cd rdkit
export RDBASE=`pwd`
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchain.cmake ..
make -j4
make install
cp -rp ../Code/RDBoost /usr/local/arm-linux-gnueabihf/usr/local/include/rdkit

 

User login