libxml2交叉编译

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交叉编译后生成文件的路径。

  1. 将/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;
}
  1. 交叉编译测试程序:
arm-linux-gcc test.c -o test -I /arm/libxml2/include/libxml2 -L /arm/libxml2/lib -lxml2
  1. 将编译生成的test文件拷贝到开发板,而后添加可执行权限:chmod +x test

  2. 测试:./test 生成了一个xml文件

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值