日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在SunOS5.8/solaris7上使用Xerces-C解析器

發(fā)布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在SunOS5.8/solaris7上使用Xerces-C解析器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??????????????????????????????????????? 在SunOS5.8/solaris7上使用Xerces-C解析器
1、下載到二進(jìn)制版本:xerces-c2_4_0-solaris_27-cc_62.tar.gz
2、解壓至:xerces-c2_4_0-solaris_27-cc_62
目錄結(jié)構(gòu):
?xerces-c2_4_0-solaris_27-cc_62(為簡單起見,后改為xerces)
??bin??//樣例的可執(zhí)行文件(筆者為SunOS 5.8,這些文件全部沒法執(zhí)行,需要重新編譯)
??doc??//文檔
??etc??//沒理它
??include??//INCLUDE文件
??lib??//庫文件
??samples??//樣例源文析
??scripts??//沒理它
??
3、首先在lib下有以下三個文件
?libxerces-c.so??0字節(jié)(無用)
?libxerces-c.so.24?0字節(jié)(無用)
?libxerces-c.so.24.0?7M多
編譯鏈接時,庫用:libxerces-c.so.24.0,但程序運行時找的卻是libxerces-c.so.24,但libxerces-c.so.24文件只有0字節(jié),
顯然不認(rèn),后來只好把libxerces-c.so.24.0改名為libxerces-c.so.24,示例運行正常(我只編譯了DOMPrint)。

4、編譯過程(由于我不太懂GNU的一些工具,所以都是笨方法)
**幾個環(huán)境變量需要設(shè):XERCESCROOT=$OIEDIR/cfrtest/xml/xerces
???export XERCESCROOT
??在INCLUDE中加入/xerces/include
??在LD_LIBRARY_PATH加入/xerces/lib
**(生成MAKE文件)轉(zhuǎn)到samples目錄下,運行runConfigure(./runConfigure -p<platform> -c<C_compiler> -x<C++_compiler>)如:. ./runConfigure -psolaris -ccc -xCC
?但是出現(xiàn)一./configure不能運行的錯誤,后來直接手工運行:. ./configure ,自動生成了所有make文件。

**(編譯)轉(zhuǎn)到DOMPrint目錄下:直接運行make但不幸的時,會出現(xiàn)錯誤,后發(fā)現(xiàn)好象是機器不能運行ifeq等之類的語句,
在自動生成的makefile中有以下兩句:
??include ${XERCESCROOT}/version.incl
??include ../Makefile.incl
這些語句在Makefile.incl中有,該文件主要為不同平臺設(shè)置不同的參數(shù)。只好用笨方法,把有關(guān)solaris平臺的所有語句拷貝到
本makefile中(語句include ${XERCESCROOT}/version.incl后)
再運行make,發(fā)現(xiàn)生成了.o文件,但鏈接時出錯,這主要是庫文件名的設(shè)置問題。

**(鏈接)由于已有了目標(biā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參數(shù)指定庫,而直接寫上了libxerces-c.so.24.0的全路徑(如果已更名為libxerces-c.so.24,則用更名后的名字)。
一切OK!

**(運行)如果沒對庫文件改名,也沒有刪除兩個大小為0的文件,則會出現(xiàn)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>

**(其它)當(dāng)然還有一些細(xì)節(jié)問題,主要是路徑或是環(huán)境變量之類(比如,我把XERCESCOUT全改成了XERCESCROOT,這個不是必須的,如果沒改,還需設(shè)置XERCESCOUT環(huán)境變量)。

改后的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

總結(jié)

以上是生活随笔為你收集整理的在SunOS5.8/solaris7上使用Xerces-C解析器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。