libmxml (Mini-XML) arm-linux 移植笔记
2017-08-25 14:54
966 查看
1、创建一个文件夹,用来存放库文件及测试代码
# mkdir mxml
2、到官方网站http://www.minixml.org/software.php下载libmxml库文件,并将其解压到该目录下。我所使用的是2.10的版本,解压后目录为mxml-2.10。
# cd mxml
# tar -xzvf mxml-2.10.tar.gz
3、编译mxml库
# cd mxml-2.10
# ./configure --host=arm-linux
make编译后会出现一个小错误。不用理会
mxml.h 头文件
libmxml.a 静态链接库文件
libmxml.so 动态链接库的链接文件,链接到libmxml.so.1.4
libmxml.so.1 动态链接库的链接文件,链接到libmxml.so.1.4
libmxml.so.1.4 动态链接库本体
4、创建一个test文件夹,存放info.xml及编写的测试代码
# cd ..
# mkdir test
# cd test
info.xml信息如下:
test.c编写如下:
5、编译我们写的测试代码 (mxml-2.10目录与test目录在同一级目录下)
# arm-linux-gcc test.c -o test -static -I ../mxml-2.10 -L ../mxml-2.10 -lmxml -lpthread
其中-lpthread是必选参数,因为libmxml库用到了pthread库在编译时,编译器会优先选择动态链接库编译,这样编译出的文件会小很多。但是同时也需要目标板上有动态链接库支持。如果想静态编译,在编译参数中加上-static
6、拷贝生成的test执行文件到arm开发板中
7、运行测试
# ./test
测试结果如下:
value:China
url:http://www.baidu.com
value:USA
url:http://www.google.com
success!
# mkdir mxml
2、到官方网站http://www.minixml.org/software.php下载libmxml库文件,并将其解压到该目录下。我所使用的是2.10的版本,解压后目录为mxml-2.10。
# cd mxml
# tar -xzvf mxml-2.10.tar.gz
3、编译mxml库
# cd mxml-2.10
# ./configure --host=arm-linux
make编译后会出现一个小错误。不用理会
/bin/sh: ./testmxml: cannot execute binary file: 可执行文件格式错误 Makefile:352: recipe for target 'testmxml' failed make: *** [testmxml] Error 126编译完生成以下几个重要的文件
mxml.h 头文件
libmxml.a 静态链接库文件
libmxml.so 动态链接库的链接文件,链接到libmxml.so.1.4
libmxml.so.1 动态链接库的链接文件,链接到libmxml.so.1.4
libmxml.so.1.4 动态链接库本体
4、创建一个test文件夹,存放info.xml及编写的测试代码
# cd ..
# mkdir test
# cd test
info.xml信息如下:
<?xml version="1.0"?> <node> <music> <state stat="China"> <url>http://www.baidu.com</url> </state> </music> <search> <state stat="China"> <url>http://www.baidu.com</url> </state> <state stat="USA"> <url>http://www.google.com</url> </state> </search> </node>
test.c编写如下:
#include<string.h> #include<stdio.h> #include<stdlib.h> #include"mxml.h" int main(int argc,char **argv) { int i; FILE *fp; mxml_node_t *tree,*node,*search; mxml_node_t *state,*url; fp = fopen("info.xml", "r"); if(fp == NULL) { printf("open the info.xml error!\n"); return -1; } tree = mxmlLoadFile(NULL, fp,MXML_TEXT_CALLBACK); fclose(fp); if(tree == NULL) { printf("Load file error!\n"); return -1; } node = mxmlFindElement(tree, tree, "node",NULL, NULL,MXML_DESCEND); if(node == NULL) { printf("can not find element node!\n"); return -1; } search = mxmlFindElement(node, tree,"search",NULL, NULL,MXML_DESCEND); if(search == NULL) { printf("can not find element search!\n"); return -1; } for(state = mxmlFindElement(search, tree, "state","stat", NULL,MXML_DESCEND); state != NULL; state = mxmlFindElement(state, tree, "state","stat", NULL,MXML_DESCEND)) { for(i=0;i<state->value.element.num_attrs;i++) { if(memcmp(state->value.element.attrs[i].name,"stat",strlen("stat")) == 0) { printf("value:%s\n",state->value.element.attrs[i].value); url = mxmlFindElement(state, tree, "url",NULL, NULL,MXML_DESCEND); printf("url:%s\n",mxmlGetText(url,NULL)); } } } mxmlDelete(tree); printf("success!\n"); return 0; }
5、编译我们写的测试代码 (mxml-2.10目录与test目录在同一级目录下)
# arm-linux-gcc test.c -o test -static -I ../mxml-2.10 -L ../mxml-2.10 -lmxml -lpthread
其中-lpthread是必选参数,因为libmxml库用到了pthread库在编译时,编译器会优先选择动态链接库编译,这样编译出的文件会小很多。但是同时也需要目标板上有动态链接库支持。如果想静态编译,在编译参数中加上-static
6、拷贝生成的test执行文件到arm开发板中
7、运行测试
# ./test
测试结果如下:
value:China
url:http://www.baidu.com
value:USA
url:http://www.google.com
success!
相关文章推荐
- libmxml (Mini-XML) arm-linux 移植笔记
- 移植libmxml到(arm-linux)
- 激光雷达学习笔记(六)ARM-Linux平台算法移植
- 我的arm_linux移植笔记
- 激光雷达学习笔记(六)ARM-Linux平台算法移植
- 我的arm_linux移植笔记
- 【ARM&Linux】TQ2440移植linux3.0笔记
- 我的arm_linux移植笔记
- 激光雷达学习笔记(六)ARM-Linux平台算法移植
- Wpa_supplicant移植至arm-linux
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
- 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记
- Linux2.6.32内核笔记(5)在应用程序中移植使用内核链表【转】
- 移植thttpd Web服务器到ARM-Linux系统
- Linux_网蜂ARM Cortex-A8学习笔记_Linux应用编程篇
- Aodv路由协议——将aodv-uu-0.9.3移植到ARM-LINUX中
- [原创]Linux 2.6.27 for ARM9/S3C2410 内核移植笔记
- u-boot 1.1.6在SkyEye 1.3.1上的移植及启动ArmLinux 2.6.36
- linux 7z命令交叉编译移植到arm linux平台
- 嵌入式ARM移植之三:移植 linux-2.6.26 内核