« Précédent Suivant »

Cross compiler V8 sur ARM 9 avec uClibc et Buildroot

Le 06/09/2010 à 10:42

Parce que j'ai mis un moment à trouver les bonnes options pour cross-compiler V8 (le moteur Javascript de Google) sur ARM9 (armv4), voici les étapes que j'ai suivies.

Tout d'abord, V8 utilise execinfo. Et comme uClibC ne l'intègre pas (contrairement à glibc) il faut légèrement feinter. N'ayant pas besoin de backtrace dans mon cas, il suffit de créer un fichier execinfo.h redéfinissant les fonctions de backtraces.

#ifndef _EXECINFO_H_
#define _EXECINFO_H_ 1

#include 

__BEGIN_DECLS

int backtrace(void**,int){ return 0; }
char** backtrace_symbols(void* const*,int){return NULL; }
void backtrace_symbols_fd(void* const*,int,int){}

__END_DECLS

#endif /* !_EXECINFO_H_ */

Ce n'est pas super propre, mais ça fonctionne. Donc en se basant sur le trunk de V8, il suffit d'utiliser les commandes suivantes. Partir du trunk est important car il contient un patch récent pour ARM nécessaire pour la compilation.

En plaçant en gros bourrin le execinfo.h à la racine de V8 et en laçant le script suivant, V8 compile. (Nécessite de définir BUILDROOT_PATH tout de même)

#!/bin/bash
export GCC_VERSION=44

export CC="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-gcc"
export CXX="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-g++"

export CXXFLAGS="-I. -mcpu=arm920t"
export CFLAGS="-I. -mcpu=arm920t"

scons mode=release arch=arm library=shared prof=off os=linux profilingsupport=off snapshot=off

Il n'y a plus qu'à stripper le .so "Et voilà !" Par contre si quelqu'un a une solution plus propre pour execinfo je suis preneur.

« Précédent Suivant »
Commentaires
blog comments powered by Disqus