libxml2交叉编译
1.下载libxml2源码包
https://gitlab.gnome.org/GNOME/libxml2/-/releases
2.编译libxml2
tar zxvf libxml2-v2.9.13.tar.gz //解压
cd libxml2-v2.9.13 //进入目录
./autogen.sh //生成configure
./configure CROSS_COMPILE=arm-linux CC=arm-linux-gcc --host=arm-linux --prefix=/home/pnc120432be01/Desktop/liyuworkspace/arm/libxml2 --with-python=/home/pnc120432be01/Desktop/liyuworkspace/libxml2-v2.9.13/python --with-zlib=/home/pnc120432be01/Desktop/wcf/arm/curl/output //配置
make
make install
注意:必定要 --with-python --with-zlib,不然make会出错!
-
–with-python:是Python交叉编译后生成文件的路径,但是下载的libxml2源码中已经绑定了python的源码,直接指向该路径即可
-
–with-zlib:是zlib交叉编译后生成文件的路径,编译需要zlib库,详情见《libcurl的交叉编译和移植.docx》第二节。
-
如果不需要这两个库也可以编译 直接使用–without-python和–without-zlib
-
–prefix: 是libxml2交叉编译后生成文件的路径。
- 将/arm/libxml2目录中的文件拷贝到arm机中,将/arm/libxml2/lib目下的.so文件拷贝到开发板根目录下的lib子目录下,而后编写测试程序以下:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main()
{
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); //定义文档和节点指针
xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST "root");
xmlDocSetRootElement(doc,root_node); //设置根节点
//在根节点中直接建立节点
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode1", BAD_CAST "newNode1 content");
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode2", BAD_CAST "newNode2 content");
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode3", BAD_CAST "newNode3 content");
//建立一个节点,设置其内容和属性,而后加入根结点
xmlNodePtr node = xmlNewNode(NULL,BAD_CAST "node2");
xmlNodePtr content = xmlNewText(BAD_CAST "NODE CONTENT");
xmlAddChild(root_node,node);
xmlAddChild(node,content);
xmlNewProp(node,BAD_CAST "attribute",BAD_CAST "yes");
//建立一个儿子和孙子节点
node = xmlNewNode(NULL, BAD_CAST "son");
xmlAddChild(root_node,node);
xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson");
xmlAddChild(node,grandson);
xmlAddChild(grandson, xmlNewText(BAD_CAST "This is a grandson node"));
//存储xml文档
int nRel = xmlSaveFile("CreateXml.xml",doc);
if (nRel != -1) {
printf("一个xml文档被建立,写入%d个字节\n", nRel);
}
//释放文档内节点动态申请的内存
xmlFreeDoc(doc);
return 1;
}
- 交叉编译测试程序:
arm-linux-gcc test.c -o test -I /arm/libxml2/include/libxml2 -L /arm/libxml2/lib -lxml2
-
将编译生成的test文件拷贝到开发板,而后添加可执行权限:chmod +x test
-
测试:./test 生成了一个xml文件