Après avoir vu comment former des programmes C incluant du SQL embarqué, il est tout aussi intéressant de savoir comment les compiler.
Avant d'être compilé, le fichier est passé au travers du préprocesseur C pour le SQL embarqué. Ce préprocesseur, appelé aussi précompilateur, convertit les instructions SQL utilisées en appels de fonctions spéciales. Après compilation, le programme doit être lié avec une bibliothèque spéciale contenant les fonctions nécessaires. Ces fonctions traitent l'information issues des arguments, exécutent la commande SQL via l'interface libpq et placent le résultat dans les arguments indiqués pour la sortie.
Le préprocesseur, appelé ecpg, est inclus dans toute installation standard de PostgreSQL™. Les programmes en SQL embarqué sont nommés typiquement avec une extension .pgc. Un fichier programme nommé prog1.pgc peut être passé au préprocesseur par la simple commande :
ecpg prog1.pgc
Ceci crée un fichier nommé prog1.c. Si les fichiers en entrée ne suivent pas le modèle de nommage suggéré, il est possible de nommer explicitement le fichier de sortie en utilisant l'option -o.
Le fichier traité par le préprocesseur peut être compilé normalement. Par exemple :
cc -c prog1.c
Les fichiers sources en C engendrés incluent les fichiers d'en-tête provenant de l'installation de PostgreSQL™. De ce fait, si PostgreSQL™ a été installé à un emplacement qui n'est pas parcouru par défaut, il faut ajouter une option comme -I/usr/local/pgsql/include sur la ligne de commande de la compilation.
Pour lier un programme SQL embarqué, il faut inclure la bibliothèque libecpg de cette façon :
cc -o monprog prog1.o prog2.o ... -lecpg
Là encore, il peut être nécessaire d'ajouter une option comme -L/usr/local/pgsql/lib sur la ligne de commande.
Si le processus de construction d'un grand projet est géré avec make, il peut être plus pratique d'inclure la règle implicite suivante dans les fichiers makefile :
ECPG = ecpg %.c: %.pgc $(ECPG) $<
La syntaxe complète de la commande ecpg est détaillée dans ecpg(1).
La bibliothèque ecpg est compatible avec les threads par défaut. Néanmoins, vous pourriez avoir besoin d'utiliser des options en ligne de commande pour les threads, histoire de pouvoir compiler votre code.