【下载】

一、下载 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下的使用的更多相关文章

  1. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  2. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  3. Linux下Nodejs安装(完整详细)

    之前安装过windows下以及Mac下的node,感觉还是很方便的,不成想今天安装linux下的坑了老半天,特此记录. 首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码, ...

  4. (转载)linux下各个文件夹的作用

    linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...

  5. 萌新笔记——linux下查看内存的使用情况

    windows上有各种软件可以进行"一键加速"之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: ...

  6. [每日Linux]Linux下xsell和xftp的使用

    实验缘由: 1.xsell在Linux下的作用就是远程登录的一个界面,也就是实现访问在Windows下访问Linux服务器的功能.之前在数据挖掘实验中因为自己电脑的内存不够,曾经使用过实验室的服务器跑 ...

  7. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  8. 我将系统从Windows迁移至Linux下的点点滴滴

    一.写在最前 由于本人的技术水平有限,难免会出现错误.本文对任何一个人有帮助都是我莫大的荣幸,任何一个大神对我的点拨,我都会感激不尽. 二.技术选型 在2013年8月低的时候,公司中了XXX市场监督局 ...

  9. linux下mono播放PCM音频

         测试环境: Ubuntu 14 MonoDevelop CodeBlocks 1.建立一个共享库(shared library) 这里用到了linux下的音频播放库,alsa-lib. al ...

随机推荐

  1. boost::xml——基本操作以及中文乱码解决方案

    下面是本人使用boost库的xml部分的基础操作,并且解决对于大家使用boost库读写中文xml内容出现的乱码问题. 1.实现boost库xml基本操作2.解决boost对xml中中文乱码问题3.实现 ...

  2. CentOS 7学习笔记(二)之Nginx安装

    说明: 1.这篇学习记录的目的是如何在CentOS 7上面安装Nginx,包括两种安装方式,yum源安装和源代码编译安装: 2.CentOS 7初学者,某些观点带有猜测之意,文中不足之处,还请批评指正 ...

  3. [DevExpress]GridControl之CustomColumnDisplayText Helper

    在实际开发中,有时候需要对GridControl中列值进行转义,譬如1转义成完成等等,一般在诸如CustomColumnDisplayText事件中能够轻松完成,为了提高代码复用性,所以对Custom ...

  4. WCF、WebAPI、WCF REST、Web Service之间的区别

    在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...

  5. win7 vs2008 激活

    参考:http://www.cnblogs.com/wgx0428/archive/2012/08/07/2627380.html win7需要管理员方式运行软件,才能看到输入框 软件:http:// ...

  6. ldd查看可执行程序依赖的文件

    ldd 用于查看可执行程序依赖的so动态链接库文件 [root@localhost ld.so.conf.d]# ldd /usr/local/tengine/sbin/nginx linux-vds ...

  7. YII千万级PV架构经验分享--俯瞰篇--性能介绍

    一张图,啥也不说了.直接上图,大图真难画. 呃,非得写满二百个字,其实本来想画均衡负债,一些服务器假设列子的,突然发现,没有业务要求,画不出来.写了这么久了,天天熬夜,得休息几天再继续.其实还有非常重 ...

  8. Canvas开发笔记(不断更新)

    1.可以使用requestAnimationFrame函数代替setInterval.需要处理浏览器兼容问题: var w = window; requestAnimationFrame = w.re ...

  9. 医学影像工作站程序ProDicom的说明

    转载 http://blog.csdn.net/prodicom/article/details/4015064 注意:以下内容为转载,但保留了第一人称,请注意,以免造成不必要的麻烦. 医网联影像工作 ...

  10. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...