Je suis presque un noob complet dans le monde Linux et j'utilise Ubuntu 14.04 LTS avec gnome-session-fallback (compiz) sous VirtualBox sur une machine Windows 8.1. Mon objectif est d'utiliser cette bibliothèque: https://github.com/akrinke/svg2cairo
La seule chose dont j'ai besoin est de compiler 'svg2cairoxml.c'. Voici une version très simplifiée de ce fichier:
#include <stdio.h>
#include <stdlib.h>
#include <librsvg/rsvg.h>
#include <cairo/cairo.h>
int main(int argc, char *argv[]) {
return 0;
}
J'ai essayé d'utiliser Code :: Blocks 13.12 et Anjuta 3.10.2 sans succès. Les deux produisant l'erreur "erreur fatale: librsvg/rsvg.h: aucun fichier ou répertoire de ce type" lors de la compilation. J'ai réussi à trouver ce fichier sous un autre emplacement: "librsvg-2.0/librsvg/rsvg.h". J'ai donc changé la 3ème ligne du code ci-dessus. Plus tard, j'ai installé la bibliothèque de développement gtk après la réponse de stackoverflow. Et puis j'ai rencontré une erreur que je ne peux pas résoudre: "erreur fatale: glib-object.h: aucun fichier ou répertoire" dans le fichier 'rsvg.h':
// this is line 31
#include <glib-object.h>
J'ai également localisé ce fichier, le vrai chemin est 'glib-2.0\glib-object.h'. Mais le truc est que "rsvg.h" est protégé donc je ne peux pas le changer. Et c'est là que je suis coincé.
J'ai aussi trouvé ces instructions:
https://stackoverflow.com/questions/7537008/compilation-error- while-using-librsvg Mais ceux-ci sont trop compliqués pour noob comme moi.
Je pense que mon objectif (compiler le seul petit fichier 'svg2cairoxml.c') est assez facile pour les programmeurs Linux expérimentés. Alors, quelqu'un peut-il m'aider à le faire? Je suppose aussi que je fais quelque chose de mal comme utiliser une mauvaise version des bibliothèques ou quelque chose comme ça.
Lorsqu'un package de développement installe son en-tête et/ou ses fichiers de bibliothèque à des endroits qui ne se trouvent pas directement sur le chemin de recherche du compilateur standard, vous devez spécifier les emplacements vous-même de manière explicite. Pour ce faire, par exemple sur la ligne de commande gcc
, vous devez utiliser -I
(inclure le chemin) et -L
(chemin d'accès à la bibliothèque). Vous devez également indiquer à l'éditeur de liens les bibliothèques spécifiques à lier à partir de ces chemins de recherche à l'aide de -l
des directives telles que -lrsvg-2
pour librsvg-2.
Étant donné que les chemins et les bibliothèques peuvent devenir assez complexes et varier en fonction de la plate-forme exacte, certains packages de développement fournissent une configuration de package (.pc
) fichier pouvant être interrogé par le pkg-config
utilitaire pour générer les directives appropriées au moment de la construction. Le librsvg-dev
le package en fait partie, donc pour construire votre programme simple sur la ligne de commande, tout ce qui est nécessaire est
gcc svg2cairoxml.c `pkg-config --cflags --libs librsvg-2.0`
Pour obtenir la même chose au sein de votre IDE, vous avez deux options: vous pouvez soit exécuter
pkg-config --cflags librsvg-2.0
et
pkg-config --libs librsvg-2.0
dans un terminal et copiez la sortie résultante dans les zones de paramètres du compilateur et de l'éditeur de liens appropriés ou, à la suite de cette réponse à une question similaire sur StackOverflow Comment configurer GTK + pour développer avec Code :: Blocks sur Ubuntu Linux , ajoutez les pkg-config
substitution de commandes directement au Other options onglet comme suit: