Déterminer l'origine d'une IP
Par olivier le vendredi 9 mai 2014, 23:37 - Programmation - #
Je viens de publier sur le wiki, un snippet, afin de déterminer l'origine d'une adresse IP écrit en Vala.
En testant ce programme avec différentes versions de ce langage, j'ai dû mettre en place des tests, qui sont évalués par le compilateur valac
. On parle souvent de préprocesseur dans certains langages.
Si on dispose d'une version de Vala >= 0.22, il faut activer la directive VALA_0_22.
Si on dispose d'une version de libsoup >= 2.42, il faut activer la directive LIBSOUP_2_42.
Comment déterminer la version d'une bibliothèque ?
C'est très simple, on utilise l'exécutable pkg-config
[1].
pkg-config --modversion libsoup-2.4 2.42.3.1
En fait pkg-config
interroge les fichiers .pc
, qui se trouve dans le dossier pkgconfig/
. Pour savoir où il se trouve dans l'arborescence :
find /usr -type d -name 'pkgconfig' -print
Par exemple, sous Fedora, on le trouve dans les dossier /usr/share
et /usr/lib
. Sous FreeBSD, il est situé dans /usr/local/libdata
.
Pour Vala :
valac --version Vala 0.20.1
Maintenant nous avons toutes les informations, on peut compiler notre programme.
Compiler
Si Vala < 0.22.x
valac --target-glib=2.32 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Si Vala >= 0.22.x et libsoup >= 2.42.x
valac --define=VALA_0_22 --define=LIBSOUP_2_42 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Sous FreeBSD, on peut changer de compilateur, en utilisant par exemple clang.
valac --cc=clang --define=VALA_0_22 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Dans tout les cas, on obtient le même résultat :
./geoip fr
Note
[1] Sous FreeBSD, on utilisera plutôt pkgconfig
.