GCC无法识别libxml2函数

时间:2014-02-05 21:45:49

标签: c parsing gcc libxml2

当尝试使用libxml2编译一个简单的解析程序时,GCC会返回此错误。

/tmp/ccuq3Hc1.o: In function `main':
xmltesting.c:(.text+0x31): undefined reference to `htmlCreatePushParserCtxt'
xmltesting.c:(.text+0x50): undefined reference to `htmlCtxtReadFile'
xmltesting.c:(.text+0x64): undefined reference to `xmlDocGetRootElement'
collect2: error: ld returned 1 exit status

代码:

#include <stdio.h>
#include <libxml/HTMLparser.h>
#include <libxml/HTMLtree.h>
#include <libxml/tree.h>
#include <libxml/parser.h>

int main()
{

    htmlDocPtr doc;
    htmlNodePtr org_node;
    htmlNodePtr curnt_node = NULL;

    htmlParserCtxtPtr parser = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL, 0);

    doc = htmlCtxtReadFile( parser, "html.txt", NULL, 0);
    org_node = xmlDocGetRootElement( parser->myDoc );

    for ( curnt_node = org_node; curnt_node; curnt_node =  curnt_node->next ) {

        if ( curnt_node->type == XML_TEXT_NODE ) {

            printf ("%s", curnt_node->content );

        }

    }

}

它似乎正在读取结构,但是找不到函数?

或者我的代码有问题吗?

1 个答案:

答案 0 :(得分:1)

您可能只需要在gcc构建行的末尾添加-lxml2


正如Dietricg Epp在评论中指出的那样,如果您的图书馆拥有正确的.pc文件pkg-config,那么这是获取必要标志的首选方式。你可以得到编译和链接标志。

$ pkg-config libxml-2.0 --cflags --libs
-I/usr/include/libxml2  -lxml2