Linux下将Tinyxml编译为静态库

互联网 17-2-23
转载请注明来源:Linux下将Tinyxml编译为静态库

一个应用需要在linux服务器上运行,不能保证每个服务器都有应用依赖的库,又懒得每个服务器都去安装下,也不太现实,于是就将应用所用到的库全部编译为静态库,直接丢到服务器上跑吧。此为应用调用xml配置文件依赖tinyxml库示例,记录下,备忘。

1.下载tinyxml库,直接从官方下载,http://www.php.cn/。

2.解压缩下载好的包,我解压缩到test目录下,进入项目目录。

3.使用vim编辑器修改Makefile文件:

将其中的OUTPUT := xmltest一行修改为:OUTPUT := libtinyxml.a 将xmltest.cpp从SRCS:=tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp中删除,,注释掉xmltest.o:tinyxml.h tinystr.h。因为不需要将演示程序添加到动态库中。 将${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}修改为:${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}。 保存退出。 4.执行make命令编译,即可在当前目录生成libtinyxml.a文件。

5.调用测试,当前目录新建一个test.cpp文件,内容如下:

view sourceprint?01 #include "tinyxml.h"     02 #include "tinystr.h"       03 #include <iostream>       04 using namespace std;     05        06 int main()     07 {     08     //创建一个XML的文档对象。     09     TiXmlDocument *myDocument = new TiXmlDocument("test.xml");     10     myDocument->LoadFile();     11           12     //获得根元素,即Persons。     13     TiXmlElement *RootElement = myDocument->RootElement();     14        15     //输出根元素名称,即输出Persons。     16     cout << RootElement->Value() << endl;     17             18     //获得第一个Person节点。     19     TiXmlElement *FirstPerson = RootElement->FirstChildElement();     20     //输出接点名Person     21         22     cout << FirstPerson->Value() << endl;     23     //获得第一个Person的name节点和age节点和ID属性。     24     TiXmlElement *NameElement = FirstPerson->FirstChildElement();     25     TiXmlElement *AgeElement = NameElement->NextSiblingElement();     26     TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();     27            28     //输出第一个Person的name内容,即周星星;age内容,即20;ID属性,即1。     29     cout << NameElement->FirstChild()->Value() << endl;     30     cout << AgeElement->FirstChild()->Value() << endl;     31     cout << IDAttribute->Value() << endl;     32        33         return 0;     34 }

创建test.xml文件,内容如下:

view sourceprint?01 <Persons>     02     <Person ID="1">     03         <name>周星星</name>     04         <age>20</age>     05     </Person>     06     <Person ID="2">     07         <name>白晶晶</name>     08         <age>18</age>     09     </Person>     10 </Persons>

编译当前文件,调用libtinyxml.a库:

[root@server tinyxml]# g++ -o test test.cpp ./libtinyxml.a
[root@server tinyxml]# ./test  Persons  Person  周星星  20  1

将编译好的test和test.xml放至另外一台没有tinyxml的库,执行成功。

以上就是Linux下将Tinyxml编译为静态库 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 静态库
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:xml学习(8) xml增删改查

相关资讯