Fehler beim verknüpfen von libxml2

Habe ich ein einfaches Beispiel für libxml2 aber es gibt den folgenden Fehler zurück:

$ gcc -Wall -lxml2 -I/usr/include/libxml2 -o ex1 ex1.c
/tmp/cc6OKSKJ.o: In function `main':
ex1.c:(.text+0x60): undefined reference to `xmlReadFile'
ex1.c:(.text+0x70): undefined reference to `xmlDocGetRootElement'
collect2: ld returned 1 exit status
$ xml2-config --libs
-lxml2
$ xml2-config --cflags
-I/usr/include/libxml2

Bin ich auf Lubuntu 11.10 x86_64 und ich habe alle Pakete, die ich brauche (sowie ich denke): libxml2, libxml2-dev, libxml2-dbg... Hier ist der code des Beispiels:

//gcc -Wall -lxml2 -I/usr/include/libxml2 -o ex1 ex1.c

#include <stdio.h>
#include <string.h>
#include <libxml/parser.h>

int main(int argc, char **argv)
{
    xmlDoc *document;
    xmlNode *root, *first_child, *node;
    char *filename;

    if (argc < 2)
    {
        fprintf(stderr, "Usage: %s filename.xml\n", argv[0]);
        return 1;
    }
    filename = argv[1];

    document = xmlReadFile(filename, NULL, 0);
    root = xmlDocGetRootElement(document);
    fprintf(stdout, "Root is <%s> (%i)\n", root->name, root->type);
    first_child = root->children;

    for (node = first_child; node; node = node->next)
    {
        fprintf(stdout, "\t Child is <%s> (%i)\n", node->name, node->type);
    }
    fprintf(stdout, "...\n");
    return 0;
}
Überprüfen Sie, dass gcc kompilieren für die gleiche Architektur wie die libxml2-Bibliotheken, die Sie verwenden (in particulat sorgen dafür, dass man nicht x86_64 und die andere i386). Es scheint unwahrscheinlich, dass dies die Ursache sein, aber es lohnt sich die überprüfung.

InformationsquelleAutor Suugaku | 2011-10-19

Schreibe einen Kommentar