在SunOS5.8/solaris7上使用Xerces-C解析器
1、下载到二进制版本:xerces-c2_4_0-solaris_27-cc_62.tar.gz
2、解压至:xerces-c2_4_0-solaris_27-cc_62
目录结构:
 xerces-c2_4_0-solaris_27-cc_62(为简单起见,后改为xerces)
  bin  //样例的可执行文件(笔者为SunOS 5.8,这些文件全部没法执行,需要重新编译)
  doc  //文档
  etc  //没理它
  include  //INCLUDE文件
  lib  //库文件
  samples  //样例源文析
  scripts  //没理它
  
3、首先在lib下有以下三个文件
 libxerces-c.so  0字节(无用)
 libxerces-c.so.24 0字节(无用)
 libxerces-c.so.24.0 7M多
编译链接时,库用:libxerces-c.so.24.0,但程序运行时找的却是libxerces-c.so.24,但libxerces-c.so.24文件只有0字节,
显然不认,后来只好把libxerces-c.so.24.0改名为libxerces-c.so.24,示例运行正常(我只编译了DOMPrint)。

4、编译过程(由于我不太懂GNU的一些工具,所以都是笨方法)
**几个环境变量需要设:XERCESCROOT=$OIEDIR/cfrtest/xml/xerces
   export XERCESCROOT
  在INCLUDE中加入/xerces/include
  在LD_LIBRARY_PATH加入/xerces/lib
**(生成MAKE文件)转到samples目录下,运行runConfigure(./runConfigure -p<platform> -c<C_compiler> -x<C++_compiler>)如:. ./runConfigure -psolaris -ccc -xCC
 但是出现一./configure不能运行的错误,后来直接手工运行:. ./configure ,自动生成了所有make文件。

**(编译)转到DOMPrint目录下:直接运行make但不幸的时,会出现错误,后发现好象是机器不能运行ifeq等之类的语句,
在自动生成的makefile中有以下两句:
  include ${XERCESCROOT}/version.incl
  include ../Makefile.incl
这些语句在Makefile.incl中有,该文件主要为不同平台设置不同的参数。只好用笨方法,把有关solaris平台的所有语句拷贝到
本makefile中(语句include ${XERCESCROOT}/version.incl后)
再运行make,发现生成了.o文件,但链接时出错,这主要是库文件名的设置问题。

**(链接)由于已有了目标文件,这里不用MAKE文件,直接运行CC如下:
CC  -L/usr/lib /userhome/oieapp/oiesvr/cfrtest/xml/xerces/bin/obj/DOMPrint/DOMPrint.o /userhome/oieapp/oiesvr/cfrtest/xml/xerces/bin/obj/DOMPrint/DOMTreeErrorReporter.o /userhome/oieapp/oiesvr/cfrtest/xml/xerces/bin/obj/DOMPrint/DOMPrintFilter.o /userhome/oieapp/oiesvr/cfrtest/xml/xerces/bin/obj/DOMPrint/DOMPrintErrorHandler.o -o /userhome/oieapp/oiesvr/cfrtest/xml/xerces/bin/DOMPrint /userhome/oieapp/oiesvr/cfrtest/xml/xerces/lib/libxerces-c.so.24.0 -lc -lgen
与makefile语句的不同之处在于:没有-l参数指定库,而直接写上了libxerces-c.so.24.0的全路径(如果已更名为libxerces-c.so.24,则用更名后的名字)。
一切OK!

**(运行)如果没对库文件改名,也没有删除两个大小为0的文件,则会出现libxerces-c.so.24未知类型文件的错,改名后运行正常(把libxerces-c.so.24.0改名为libxerces-c.so.24)。
如下:
$DOMPrint class.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE course [
<!ELEMENT course (Name,Dept,Instructor,Student)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Dept (#PCDATA)>
<!ELEMENT Instructor (Name)>
<!ELEMENT Student (Name)*>
]><course>
<Name>Calculus</Name>
<Dept>Math</Dept>
<Instructor>
<Name>Jim Green</Name>
</Instructor>
<Student>
<Name>Jack</Name>
<Name>Mary</Name>
<Name>Paul</Name>
</Student>
</course>

**(其它)当然还有一些细节问题,主要是路径或是环境变量之类(比如,我把XERCESCOUT全改成了XERCESCROOT,这个不是必须的,如果没改,还需设置XERCESCOUT环境变量)。

改后的makefile如下:

PLATFORM = SOLARIS
COMPILER = CC
GCC =
GXX =
CXXFLAGS = -g
CFLAGS = -g
LDFLAGS =
THREADS =
EXTRA_LIBS =
PREFIX = /usr/local

#以下三句其实是include ${XERCESCROOT}/version.incl的替代
VER=2_4_0
SO_TARGET_VERSION=24
SO_TARGET_VERSION_MAJOR=0

#BEGIN 从include ../Makefile.incl而来
INCLUDES= -I. -I${XERCESCROOT}/include
LIB_DIR=${XERCESCROOT}/lib
LIBNAME=xercesc
THISLIB=${LIB_DIR}/${LIBNAME}

LIBRARY_NAMES=-l${LIBNAME}
LIBRARY_SEARCH_PATHS=-L${LIB_DIR}
TO = o

CMP= -c ${CXXFLAGS}
CC= CC -c -D${PLATFORM} -D_REENTRANT -pic
LINK =  CC -D${PLATFORM} ${LDFLAGS}
PLATFORM_LIB_LINK_OPTIONS=-L/usr/lib
EXTRA_LINK_OPTIONS=-lc -lgen ${EXTRA_LIBS}
SHLIBSUFFIX=.so
#END 从include ../Makefile.incl而来

APP_NAME=DOMPrint

#原来XERCESCROOT是XERCESCOUT
OUTDIR= ${XERCESCROOT}/bin/obj/${APP_NAME}
EXEC= ${XERCESCROOT}/bin
OBJS= ${OUTDIR}/DOMPrint.o ${OUTDIR}/DOMTreeErrorReporter.o ${OUTDIR}/DOMPrintFilter.o ${OUTDIR}/DOMPrintErrorHandler.o
SRC= ${XERCESCROOT}/samples/${APP_NAME}
HEADER_FILES=${SRC}/DOMTreeErrorReporter.hpp ${SRC}/DOMPrintFilter.hpp ${SRC}/DOMPrintErrorHandler.hpp

#这几句也可以不注释
#makedir::
# -mkdir -p $(OUTDIR)

#最终链接命令对下面这句做了一些改动(见上文的说明)
${EXEC}/${APP_NAME}:: ${OBJS}
 ${LINK} ${PLATFORM_LIB_LINK_OPTIONS} ${OBJS} -o $@ ${LIBRARY_SEARCH_PATHS} ${LIBRARY_NAMES} ${EXTRA_LINK_OPTIONS}
${BATCH_TARGET}:: ${OBJS}
 ${LINK} ${PLATFORM_LIB_LINK_OPTIONS} ${OBJS} -o $@ ${LIBRARY_SEARCH_PATHS} ${LIBRARY_NAMES} ${EXTRA_LINK_OPTIONS}

$(OUTDIR)/DOMPrint.o:: ${SRC}/DOMPrint.cpp ${HEADER_FILES}
 ${CC} -I/userhome/oieapp/oiesvr/cfrtest/xml/xerces/include  ${CMP} -o $(OUTDIR)/DOMPrint.o ${SRC}/DOMPrint.cpp

$(OUTDIR)/DOMTreeErrorReporter.o:: ${SRC}/DOMTreeErrorReporter.cpp ${HEADER_FILES}
 ${CC} -I/userhome/oieapp/oiesvr/cfrtest/xml/xerces/include  ${CMP} -o $(OUTDIR)/DOMTreeErrorReporter.o ${SRC}/DOMTreeErrorReporter.cpp

$(OUTDIR)/DOMPrintFilter.o:: ${SRC}/DOMPrintFilter.cpp ${HEADER_FILES}
 ${CC} -I/userhome/oieapp/oiesvr/cfrtest/xml/xerces/include  ${CMP} -o $(OUTDIR)/DOMPrintFilter.o ${SRC}/DOMPrintFilter.cpp
 
$(OUTDIR)/DOMPrintErrorHandler.o:: ${SRC}/DOMPrintErrorHandler.cpp ${HEADER_FILES}
 ${CC} -I/userhome/oieapp/oiesvr/cfrtest/xml/xerces/include   ${CMP} -o $(OUTDIR)/DOMPrintErrorHandler.o ${SRC}/DOMPrintErrorHandler.cpp

#这几句也可以不注释
#clean::
# rm -f ${OBJS} ${EXEC}/${APP_NAME}
#
#distclean:: clean
# rm -f Makefile

在SunOS5.8/solaris7上使用Xerces-C解析器相关推荐

  1. NVIDIA GPU上的直接线性求解器

    NVIDIA GPU上的直接线性求解器 NVIDIA cuSOLVER库提供了密集且稀疏的直接线性求解器和本征求解器的集合,它们为计算机视觉,CFD,计算化学和线性优化应用程序提供了显着的加速.cuS ...

  2. 管理springmvc组件——前端控制器、控制器映射器和适配器、视图解析器、文件上传的、拦截器||消息转化

    管理springmvc组件 概述 在使用springmvc时要配置哪些东西 前端控制器 控制器映射器和适配器 映射器  Map<Set<String>,Object> Set& ...

  3. 常见的上传绕过以及解析漏洞

    前端绕过 服务端验证绕过 编辑器漏洞 配合解析漏洞突破上传 通常一个文件以HTTP协议进行上传时,将以POST请求发送WEB服务器,WEB服务器接收到请求并同意后,用户与WEB服务器将建立连接,并传输 ...

  4. SpringBoot文件上传源码解析

    一.SpringMVC文件上传源码分析前言(这部分我觉得原作者写的很好) 该如何研究SpringMVC的文件上传的源码呢? 研究源码并不是仅仅知道程序是怎样运行的,而应该从宏观的角度.不同的立场去看待 ...

  5. 使用springMVC提供的CommonsMultipartResolver文件解析器,实现文件轻松上传

    springMVC提供的前端控制器,可以拦截所有请求,指挥调度所有后台逻辑资源. 使用传统方式进行文件上传,需要我们手动解析request对象,获取文件上传项,再进行文件的上传. springMVC框 ...

  6. 七牛文件上传回调以及解析回调参数

    可参考七牛官网文档:https://developer.qiniu.com/kodo/sdk/1239/java 实现以下功能要引入七牛的sdk <!-- 七牛客户端组件包 -->< ...

  7. 推荐3个Windows电脑上的epub小说阅读器

    epub是一种使用广泛的电子书格式,想必平时大家通常会遇到自己使用的阅读器不能在Windows系统上兼容的问题,因为工作的原因,小编接触到很多不同的阅读器,今天小编将为大家推荐Windows电脑上最好 ...

  8. solidity投票合约在bcos上的部署及解析(三)

    solidity投票合约在bcos上的部署及解析(二) solidity投票合约在bcos上的部署及解析(一) 在上俩篇文章中我们分析了一个solidity语言编写的投票合约,现在我们要将写好的投票合 ...

  9. Spring之配置 multipartResolver 解析器、上传文件、处理文件

    随笔 multipart格式的数据 会将 一个表单拆分为 多个部分,每个部分对应一个输入域.在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制. ...

最新文章

  1. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
  2. 系统时间、时区、字符集
  3. C#使用属性进行之传递查询报表
  4. connect连接oracle6,Oracle Connect By 使用实例
  5. JS设置cookie,删除cookie
  6. 七牛上传图片html,MWEB+七牛 上传图片
  7. mysql延迟注入br,实验3—SQL注入漏洞的攻击与防御(基于时间延迟的盲注)
  8. NLP之路-Dataset大全
  9. 计算机职称考试如何知道这道题对错,职称计算机考试Excel判断试题2017
  10. SAS9.4安装过程中的sid文件更新
  11. wifi频率和zigbee干扰_设置Zigbee和wifi信道避免干扰的方法
  12. 不用无限手套,人人都能开发 BI 系统
  13. 学习用Python实现简单区块链
  14. 《计算机网络教程》(微课版 第五版)复习补充题
  15. 使用注册表删除没用的DLL文件
  16. 计算机cpu多大,电脑cpu多少容量
  17. 度量衡计算工具_单位换算器|度量衡计量单位换算转换器下载v1.0 官方版 - 欧普软件下载...
  18. 自然辩证法与计算机科学的关系,自然辩证法和科学技术有什么关系
  19. java开发tv上转盘抽奖_java实现大转盘抽奖的简单思路
  20. 《深度学习》/《Deep Learning》——深度学习圣经的读书笔记

热门文章

  1. 科大讯飞和百得思维_最佳辩手陈铭力荐 讯飞智能学习机让学习不再难
  2. linux文件系统挂载磁盘,linux – 无法挂载磁盘(VFS:找不到ext4文件系统)
  3. python 中的真值表
  4. 自然语言处理期末复习(1)n元模型
  5. devstack部署openstack流程与相关问题的记录(ubuntu 16.04)
  6. 2019年下信息系统项目管理师真题讲解【视频+PDF下载】
  7. Error querying database.Cause:java.sql.SQLSyntaxErrorException:ORA-00911:invalid character
  8. 设计模式-----单例模式优缺点及使用场景
  9. 笔记-项目合同管理-项目合同谈判与签订-供应商项目立项
  10. Winform中使用Timer实现滚动字幕效果(附代码下载)