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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrer link-Zeile ist falsch. Versuchen
Lesen diese zu verstehen, warum die Reihenfolge der Quellen und Bibliotheken auf der Kommandozeile Angelegenheiten.
Ich konnte mir nie vorstellen, die Bestellung ankam, aber ja, für mich funktioniert es nur mit -lxml2 am Ende.
anstelle von-I/usr/include/libxml2 verwenden $(xml2-config --cflags)
Nicht cross-kompilieren. Funktioniert mit host kompilieren, aber wenn Sie es tun, um das Ziel, es borks auf den link, der nicht so leicht befassen sich mit link, um weil es alle automagic mit Autotools. (Fail...)
InformationsquelleAutor Employed Russian