- 论坛徽章:
- 0
|
系统环境 SCO5.0.6
经过2天的鏖战,终于成功的完成了SCO上libxml2的安装和应用程序的编译,
SCO上安装libxml2不必安装gcc,只要有gnu make即可,以下列出我安装libxml2
的详细过程和应用程序的编译。很多人都为SCO上libxml2的安装折腾得要命,
浪费时间和精力,因此我安装第一遍成功后,又在一个干净的SCO虚拟机上成功
实现了一次,并记录了每一个步骤,希望以此能减少各位朋友在SCO上安装libxml2
所浪费的时间和精力.
非常感谢sunlan、snow888的支持,不然我是无法安装成功的,谢谢!
本文未经作者同意,不得用于商业用途!
2 下载并安装gnu make包:
如果sco没有事先安装gnu make,那么make时会报告格式错。
这个地址可以下载ftp://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz)
下载的文件是:make-3.81.tar.gz
因为我的sco没有gzip,所以就用windows下的rar进行解压缩,
解压后的文件夹是 make-3.81
通过ftp工具,将make-3.81文件夹传到sco的/tmp目录下
以root用户登陆sco
次序执行以下命令;
#cd /tmp #进入tmp目录
#chmod -R 755 make-3.81 #将目录内文件设置可执行权限
#mkdir make-build #建立安装目录
#cd make-build #进入安装目录
#../make-3.81/configure #执行配置文件
#make #编译后,会生成一个"make"文件在当前目录下
#make install # make文件会被放到 /usr/local/bin
#cd /usr/bin
#mv make make.old #备份原始的make命令
#cd /bin
#mv make make.old
#cp /usr/local/bin/make . #拷贝新的make到bin目录下
3 下载并编译libiconv和libxml2
3.1 libiconv的安装
到 ftp.gnu.org/pub/gnu/libiconv/
下载的libiconv-1.11.tar.tar在windows下解压(我的sco没有gzip)
然后将目录 ibiconv-1.11 传到sco的/tmp目录中
以root用户登陆sco
次序执行以下命令;
#cd /tmp
#chmod -R 755 ibiconv-1.11
#mkdir ibiconv-build
#cd ibiconv-build
#../libiconv-1.11/configure --enable-static=yes #配置并生成静态库模式
#make #创建编译环境
#make install #安装环境
注意,如果编译过程中报告错误如下:
command line: fatal error: illegal value for -R: /usr/local/lib
请修改libtool的hardcode_libdir_flag_spec定义:
#hardcode_libdir_flag_spec="\`test -z \"\$SCOABSPATH\" && echo \${wl}-R,\$libdir\`"
hardcode_libdir_flag_spec=""
3.2 libxml2的安装
到ftp://xmlsoft.org/libxml2/
下载的libxml2-2.6.29.tar.gz在windows下解压(我的sco没有gzip)
然后将目录 libxml2-2.6.29 传到/tmp目录中
以root用户登陆sco
次序执行以下命令;
#cd /tmp
#chmod -R 755 libxml2-2.6.29
#cd libxml2-2.6.29
#vi testModule.c
在程序开始处增加以下代码:
#ifndef PATH_MAX
#ifdef _POSIX_PATH_MAX
#define PATH_MAX _POSIX_PATH_MAX
#else
#define PATH_MAX 255
#endif
#endif
#cd /tmp
#mkdir libxml-build
#cd libxml-build
#../libxml2-2.6.29/configure --with-iconv=/usr/local #配置并生成静态库模式
#make #编译
#make install #安装
4 配置开发环境
要想编译基于xml得程序,要做以下步骤
4.1连接库,否则应用程序启动后报告动态连接库不存在
#cd /usr/lib
#ln -s /usr/local/lib/libiconv.so.6 libiconv.so.6
#ln -s /usr/local/lib/libxml2.so.8 libxml2.so.8
4.2在一普通用户下编写测试程序和xml文档
test.c文件内容
#include "libxml/xmlexports.h"
#include "libxml/parser.h"
main( int argc, char **argv )
{
xmlDocPtr doc;
if( (doc = xmlReadFile( argv[1], NULL, 0)) == NULL )
{
printf( "error!\n" );
exit( -1 );
}
printf( "OK!\n" );
xmlCleanupParser();
exit( 0 );
}
test.xml文件内容:
<?xml version="1.0" encoding="GBK"?>
<CFX>
<HEAD>
<VER>1.0</VER>
<SRC>202010000000</SRC>
<DES>100000000000</DES>
<APP>tips</APP>
<MsgNo>1102</MsgNo>
<MsgID>20051024092733000440</MsgID>
<MsgRef>20051024092733000440</MsgRef>
<WorkDate>20051024</WorkDate>
<Reserve>String</Reserve>
</HEAD>
</CFX>
4.3编译并执行测试程序
编写makefile文件:
makefile文件内容
# Define System Command
CC=cc
# Define Compile Flags
LIBS= -L/usr/local/lib -lxml2 -liconv -lm -lsocket /usr/local/lib/libxml2.a
INCDIR=-I/usr/local/include/libxml2 -I/usr/local/include
# Define All Objects
all: test
test:test.o
$(CC) -o $@ $(INCDIR) $(LIBS) test.o
# Define Complile Rules
.SUFFIXES:.c
.c.o:
$(CC) -c -o $*.o $(INCDIR) $<
编译:
执行make命令即可,在当前目录下生成test程序。
执行:
在当前目录下执行 ./test test.xml 如果显示"OK!"表示编译环境安装成功。
[ 本帖最后由 chunlind 于 2007-9-27 19:22 编辑 ] |
|