zoukankan      html  css  js  c++  java
  • 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,因为有部分函数是写在宏里面的。

  • 相关阅读:
    【CYH-02】NOIp考砸后虐题赛:成绩:题解
    UVA12657 Boxes in a Line:题解
    洛谷团队月赛题:题解
    UVA10071 Back to High School Physics:题解
    NOIp2018普及组T3暨洛谷P5017 摆渡车:题解
    洛谷P2001 硬币的面值 题解
    洛谷P1033 自由落体 题解
    尴尬
    UVA11988 【Broken Keyboard (a.k.a. Beiju Text)】:题解
    linux基础命令学习(十二)yum命令
  • 原文地址:https://www.cnblogs.com/matthew-2013/p/4670046.html
Copyright © 2011-2022 走看看