tinyXml在linux下的使用
【下载】
一、下载 xml 软件包:tinyxml_2_6_2.zip
Tinyxml(轻量级 c++)下载地址:http://sourceforge.net/projects/tinyxml/?source=dlp
Tinyxml 压缩包里面其实有用的只有几个文件:
tinystr.cpp tinystr.h tinyxml.cpp tinyxmlerror.cpp tinyxml.h tinyxmlparser.cpp makefile
四个 cpp 文件和两个 h 头文件,以及一个 makefile 文件。
二、解压
#unzip tinyxml_2_6_2.zip
解压好后,进入解压目录
# cd tinyxml
【.o文件的编译和xmltest测试的可执行文件的执行】
编译
#make
最后讲生成如下信息:
即产生 tinyxml 自带的测试程序,xmltest 可执行文件。在 tinyxml 目录下可以看见编译 成功的可执行文件 xmltest ,运行 xmltest 将会输出测试信息。
【动态库的编译】
修改 makefile 内容(仅列出修改部分)
#这里要把这个宏修改为YES,要不然有些库中的函数用不了
TINYXML_USE_STL := YES
#**************************************************************************
# Targets of the build
#**************************************************************************
OUTPUT := xmltest
LIB := libtinyxml.so #增加生成 libtinyxml.so 目标
all: ${OUTPUT} ${LIB}
#**************************************************************************
# Source files
#************************************************************************** SRCS := tinyxml.cpp
tinyxmlparser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp
# Add on the sources for libraries
SRCS := ${SRCS}
OBJS := $(addsuffix .o,$(basename ${SRCS}))
LIBOBJS := tinyxml.o tinyxmlparser.o tinyxmlerror.o tinystr.o
#**************************************************************************
# Output
#**************************************************************************
${OUTPUT}: ${OBJS}
${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
${LIB}: ${LIBOBJS}
ar -r $@ ${LIBOBJS }
#**************************************************************************
# common rules
#**************************************************************************
# Rules for compiling source files to object files
%.o : %.cpp
${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@
%.o : %.c
${CC} -c ${CFLAGS} ${INCS} $< -o $@
dist:
bash makedistlinux
clean:
-rm -f core ${OBJS} ${OUTPUT} ${LIB} ${TEST}
其中红色与蓝色 部分为添加部分,再一次执行 make 的时候,将在 tinyxml 目录下产生 一个动态库文件 libtinyxml.so。
我使用的目录是 /mnt/hgfs/07-C++Project/tinyxml
但是在ldconfig刷新这个动态库的时候报错:
myzr@myzr:/usr/local/lib$ sudo ldconfig
[sudo] password for myzr:
/sbin/ldconfig.real: /usr/local/lib/libtinyxml.so is not an ELF file - it has the wrong magic bytes at the start.
这里是因为makefile写的不对,生成动态库应该用ld,而不是用ar,ar是生成静态库使用的。修改成下面的就可以了。同时要把xmltest.cpp删除,有这个编译不通过。
${LIB}: ${LIBOBJS}
${CXX} $(LDFLAGS) -o $@ ${LIBOBJS}
#ar -r $@ ${LIBOBJS} 这个是生成静态库的
【动态库的使用】
1,包含头文件目录
2,设置库文件名称为tinyxml
3,包含库文件目录
4,要包含一个宏TIXML_USE_STL,因为有部分函数是写在宏里面的。
tinyXml在linux下的使用的更多相关文章
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- Linux下Nodejs安装(完整详细)
之前安装过windows下以及Mac下的node,感觉还是很方便的,不成想今天安装linux下的坑了老半天,特此记录. 首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码, ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- 萌新笔记——linux下查看内存的使用情况
windows上有各种软件可以进行"一键加速"之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: ...
- [每日Linux]Linux下xsell和xftp的使用
实验缘由: 1.xsell在Linux下的作用就是远程登录的一个界面,也就是实现访问在Windows下访问Linux服务器的功能.之前在数据挖掘实验中因为自己电脑的内存不够,曾经使用过实验室的服务器跑 ...
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- 我将系统从Windows迁移至Linux下的点点滴滴
一.写在最前 由于本人的技术水平有限,难免会出现错误.本文对任何一个人有帮助都是我莫大的荣幸,任何一个大神对我的点拨,我都会感激不尽. 二.技术选型 在2013年8月低的时候,公司中了XXX市场监督局 ...
- linux下mono播放PCM音频
测试环境: Ubuntu 14 MonoDevelop CodeBlocks 1.建立一个共享库(shared library) 这里用到了linux下的音频播放库,alsa-lib. al ...
随机推荐
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)B一个简单的问题
题目描述 这是一个三层的字母塔. 如何输出一个任意层数的字母塔呢? 输入 一个数字n(1<=n<=26),表示字母塔的层数 注意 此题多组输入 输出 n层的字母塔 样例输入 3 4 样例 ...
- 九度OJ 1541 二叉树【数据结构】
题目地址:http://ac.jobdu.com/problem.php?pid=1541 题目描述: 旋转是二叉树的基本操作,我们可以对任意一个存在父亲节点的子节点进行旋转,包括如下几种形式(设被旋 ...
- HotSpot算法实现
1.枚举根节点 可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中. 可达性分析对执行时间的敏感体现在GC停顿上,因为分析工作必须在能确保一 ...
- DTCMS,手机网站访问跳转到DTCMS官网解决方法
mobile\js\base.js main\js\common.js 去掉location.href = 'http://m.dtcms.net'; 也可以设定手机访问跳转到指定域名
- Android 核心组件 Activity 之下
创建新的Activity的方式: 1. 在相应的文件下 Ctrl + N (Eclipse, Android中不知道是不是) 2. 创建类,继承自Activity或者Activity的子孙类, 并在 ...
- 计算器(delphi)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- C# 白话系列之——白话委托
今天看到首页有个委托的文章,但大都写的太专业,而且没有实用的例子场景.正好昨天做了一个有关委托的功能,所以也来凑个热闹,用白话掰掰 一.委托是什么 我们都知道数据类型,简单点的如,想给一个变量赋值整数 ...
- GridView ItemCommand
GridView ItemCommand中取某行某列的值方法,这里提供两个常用的: 一.用CommandArgument属性取值页面如下: <asp:TemplateColumn HeaderT ...
- SDIBT 3237 Boring Counting( 划分树+二分枚举 )
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=3237 Problem H:Boring Counting Time Limit: 3 Sec ...
- Nginx 的启动、停止、平滑重启、信号控制和平滑升级
Nginx 的启动 假设 nginx 安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是: [root@localhost ~]# /usr/local ...