链接libxml2时出错

我有一个libxml2的简单示例,但它返回以下错误:

$ 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 

我在Lubuntu 11.10 x86_64上,我有我需要的所有软件包(我认为):libxml2,libxml2-dev,libxml2-dbg …这是示例的代码:

 // gcc -Wall -lxml2 -I/usr/include/libxml2 -o ex1 ex1.c #include  #include  #include  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  (%i)\n", root->name, root->type); first_child = root->children; for (node = first_child; node; node = node->next) { fprintf(stdout, "\t Child is  (%i)\n", node->name, node->type); } fprintf(stdout, "...\n"); return 0; } 

您的链接线不正确。 尝试

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

阅读本文以了解为什么命令行上的源和库的顺序很重要。