[ ToolChain x86 & x64 ] [ Debian6 x86 based ] Cross ToolChain - Qnap Source Compilator

QoolBox

Grand Maître Jedi
Voici deux toolchains basés que j'ai créé sur un Debian 6 x86 (32bit) avec crosstool-ng en exlclusivité pour Cachem
ils vous permettrons de compiler les sources afin de les faire tourner sur vos NAS Qnap (Intel)

glibc 2.6.1, binutils 1.19.1 (x86)
glibc 2.11.1, binutils 2.22 (x64)

http://www.positiv-it.fr/QNAP/APP/i686-QNAP-gcc436-glibc2.61-DEB6x86.tar.gz (GCC 4.3.6) --- 32 bits ---
http://www.positiv-it.fr/QNAP/APP/x86_64-QNAP-gcc463-glibc2.11.1-DEB6x86.tar.gz (GCC 4.6.3) --- 64 bits ---

note d'installation :

installer votre Debian 6 x86 (i386)
créer un repertoire /data/x-tools
décompresser un des toolchain dans /data
créez dans votre $HOME (généralement /root) un fichier .bash_profile

remplissez le avec le code suivant :

Code:
HOST=i686-QNAP-linux-gnu
export HOST

TOOLCHAIN_PATH=/data/x-tools/i686-QNAP-linux-gnu
export TOOLCHAIN_PATH

OPT_PATH=/opt
export OPT_PATH

PATH=$PATH:$HOME/bin:${TOOLCHAIN_PATH}/bin:${TOOLCHAIN_PATH}/i686-QNAP-linux-gnu/bin
export PATH


## x86 = i686-QNAP-linux-gnu
## x64 = x86_64-QNAP-linux-gnu

remplacer i686-QNAP-linux-gnu par x86_64-QNAP-linux-gnu, le cas échéant si vous osuhaitez utilisez le CT en 64bit

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 \



;)
 

Tryphon

Padawan
Bonjour,

J'utilise le Toolchain (kernel 4.2.8) dans un container exécutant Ubuntu 14.04 64 bits (kernel 4.2.8) en mode console. zlib ne semble pas être disponible dans le toolchain mais je l'ai installé (zlib1g et zlib1g-dev) dans Ubuntu.

Est-il possible d'utiliser zlib (installé dans Ubuntu) dans le fichier de compilation donné en exemple dans ce thread? En modifianf CFLAGS, LDFLAGS, ... ? J'aurai besoin d'être mis sur la voie?

Merci!
 

QoolBox

Grand Maître Jedi
oui tu dois le compilé d'abord dans ton prefix

et le programme dont il depend tu dois lui indiquer les bons FLAGS

ex :

crosscompile ZLIB

Code:
wget https://zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz 

cd zlib-1.2.11

./configure --prefix=${PREFIX} --libdir=${PREFIX}/lib --sharedlibdir=${PREFIX}/lib --includedir=${PREFIX}/include
make install CC=${HOST}-gcc LDSHARED="${HOST}-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map" CPP="${HOST}-gcc -E" AR=${HOST}-ar RANLIB=${HOST}-ranlib

et si un prog en autoconf ... en a besoin il ira le chercher pour le peux que tu parses anisi

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}
...
...
...
 
Haut Bas