Qnap [ ToolChain x64 ] [ Debian 7.x based ] Cross compile Qnap

QoolBox

Représentant QNAP
2 Janvier 2014
10 559
163
153
50
France
www.qnap.com
Encore un nouveau ToolChain cette fois pour Debian 7 x64, Attention il permet de faire tourner des applications compilées en 64bit certains des NAS compatibles
mais /lib64 n'étant pas peuplée avec toutes les librairies vos devrez sans doute exporter certaines librairies en provenance de mon Toolchain...

voici les specs : Eglic 2.11, binutils 2.2.25 , gcc 4.9.3

http://www.positiv-it.fr/QNAP/APP/x86_64-Qnap-linux-gnu.tgz (GCC 4.9.3)

note d'installation :

installer votre Debian 7 x64
créer un répertoire /data
décompresser le toolchain dans /data
créez dans votre $HOME (généralement /root) un fichier .bash_profile

remplissez le avec le code suivant :

Code:
HOST=x86_64-Qnap-linux-gnu
export HOST

TOOLCHAIN_PATH=/data/x-tools/x86_64-Qnap-linux-gnu
export TOOLCHAIN_PATH

OPT_PATH=/opt
export OPT_PATH

PATH=$PATH:$HOME/bin:${TOOLCHAIN_PATH}/bin:${TOOLCHAIN_PATH}/x86_64-Qnap-linux-gnu/bin
export PATH

compilez vos applications en utilisant le prefix suivant :

PREFIX=/share/CACHEDEV1_DATA/.qpkg/$NOM_DE_L_APPLI

en en host utiliser ${HOST}

example : (Generic mais peux varier selon les sources à compiler, le code doit être adapté aux sources et certaines fonctions peuvent nécessiter un export préalable)
Code:
CXX=${HOST}-g++                 \
LD=${HOST}-ld                   \
AS=${HOST}-as                   \
AR=${HOST}-ar                   \
CC=${HOST}-gcc \
PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"  \
CFLAGS="-O2 -I$PREFIX/include" \
CXXFLAGS="-O2 -I$PREFIX/include"     \
CPPFLAGS="-O2 -I$PREFIX/include "     \
LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib" \
./configure \
--prefix=$PREFIX \
--host=${HOST} \
--bindir=$PREFIX/bin \
--sbindir=$PREFIX/bin \
--libexecdir=$PREFIX/libexec \
--libdir=$PREFIX/lib \
--datadir=$PREFIX/share \
--datarootdir=$PREFIX/share \
--sysconfdir=$PREFIX/etc \
--sharedstatedir=$PREFIX/com \
--localstatedir=$PREFIX/var \
--includedir=$PREFIX/include \
--oldincludedir=$PREFIX/include \
--infodir=$PREFIX/share/info \
--localedir=$PREFIX/share/locale \

si votre code ne se lance pas... faites un ldd sur l'executable et vérifier qu'il ne manque pas de librairies, si c'est le cas copier celle en provenance de mon ToolChain dans un répertoire de votre application et faire une export

Code:
export LD_LIBRARY_PATH=chemin_vers_vos_lib64:$LD_LIBRARY_PATH

;)

testé sur TS-253PRO