免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3849 | 回复: 9
打印 上一主题 下一主题

[SCO UNIX] 详细的SCO下的libxml2安装 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-24 01:30 |只看该作者 |倒序浏览
系统环境 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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-24 08:40 |只看该作者

安装libxml2前,要保证磁盘至少有700M的可用空间

SCO完整安装libxml2前,要保证磁盘至少有700M的可用空间,我的开始有580M空闲空间,结果编译libxml2的时候报告一个状态错,折腾了半天才发现,原来是磁盘空间满了。

论坛徽章:
0
3 [报告]
发表于 2007-09-24 15:37 |只看该作者
根本没有这样复杂。我以前发过一个在sco506下编译和使用libxml2的帖子,可以找来看一下。

论坛徽章:
0
4 [报告]
发表于 2007-09-24 16:14 |只看该作者

回复 #3 sunlan 的帖子

警告,如果使用DB2的环境,绝对不可以安装rs506a、os646c、gwxlibs-1.3.1这三个包,
否则db2起不来了,报告缺少_ld_tail的定义,原因是libc.so.1这个文件被新生成后,没有了_ld_tail的定义,db2 for sco的需要这个定义,重装了db2也不行。

$db2start
dynamic linker: db2start: relocation error: symbol not found: _ld_tail; referenc
ed from: /usr/IBMdb2/V2.1/lib/libdb2e.so.1

[ 本帖最后由 chunlind 于 2007-9-26 12:44 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-09-24 20:20 |只看该作者
装libxml2应该是不需要打补丁的。如果db2因为libc.so而起不来,你可以试着从别的机器上拷一个

论坛徽章:
0
6 [报告]
发表于 2007-09-25 09:31 |只看该作者
libc.so应该可以从UDK光盘安装

论坛徽章:
0
7 [报告]
发表于 2007-09-25 11:44 |只看该作者

回复 #6 saintdragon 的帖子

我对unix系统不熟,属于菜鸟,还有,gnu make的源码我到官方网站上找过,可惜我英文太烂,不知道哪个是gun make的源码,你可否提供我个详细连接?我可以再试验一次的,谢谢啊! 如果你说的源码就是 ftp://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz
我之前用make编译,没有过去,刚才想想这么多高人都说可以直接编译,我就又装了一次,这回没有用make,而是用build.sh,发现的确生成make了,我先试试,如果ok,真是太感谢各位了!

make是生成了,也把/bin/make /usr/bin/make 重命名了,当编译 libiconv的时候,报告这个错,好像跟没用gnu make效果一样,有建议提供吗?

cd src && make all
make[1]: Entering directory `/tmp/lib-build/src'
/bin/sh ../libtool --mode=link cc  iconv_no_i18n.o ../srclib/libicrt.a ../lib/li
biconv.la -o iconv_no_i18n
cc iconv_no_i18n.o -o .libs/iconv_no_i18n  ../srclib/libicrt.a ../lib/.libs/libi
conv.so -Wl,-R,/usr/local/lib
command line: fatal error: illegal value for -R: /usr/local/lib
make[1]: *** [iconv_no_i18n] Error 1
make[1]: Leaving directory `/tmp/lib-build/src'
make: *** [all] Error 2

[ 本帖最后由 chunlind 于 2007-9-26 11:03 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-09-25 15:26 |只看该作者
原帖由 chunlind 于 2007-9-25 11:44 发表
我试验了多次,包括替换libc(核心库),都不行,还有,大家不要试验替换libc了,结果是必死无疑,我试验了3次系统只有一个结果--瘫痪!
不去打补丁(rs506a、os646c、gwxlibs-1.3.1)的确无法使用gnu make, ...




你就没有注意搜索以前的贴子!

sunlan 老斑发过一个完整的编译、安装 libxml2 的方法,自己可以搜索一下。

另:gnu make 可以自己下载源码编译安装,并不需要打那三个补丁的,最新的 gnu make 版本是 3.8.1 ,编译可以直接使用系统自带的开发包。

论坛徽章:
0
9 [报告]
发表于 2007-09-26 09:41 |只看该作者

回复 #8 snow888 的帖子

我对unix系统不熟,属于菜鸟,还有,gnu make的源码我到官方网站上找过,可惜我英文太烂,不知道哪个是gun make的源码,你可否提供我个详细连接?我可以再试验一次的,谢谢啊! 如果你说的源码就是 ftp://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz
我之前用make编译,没有过去,刚才想想这么多高人都说可以直接编译,我就又装了一次,的确成功了。

make是生成了,也把/bin/make /usr/bin/make 重命名了,路径也加上/usr/local/bin了,当编译 libiconv的时候,报告这个错,好像跟没用gnu make效果一样,有建议提供吗?(首先保证我的确用的是新生成的make,因为之前打make命令报告没找到文件,加上/usr/local/bin路径后就可以了)

cd src && make all
make[1]: Entering directory `/tmp/lib-build/src'
/bin/sh ../libtool --mode=link cc  iconv_no_i18n.o ../srclib/libicrt.a ../lib/li
biconv.la -o iconv_no_i18n
cc iconv_no_i18n.o -o .libs/iconv_no_i18n  ../srclib/libicrt.a ../lib/.libs/libi
conv.so -Wl,-R,/usr/local/lib
command line: fatal error: illegal value for -R: /usr/local/lib
make[1]: *** [iconv_no_i18n] Error 1
make[1]: Leaving directory `/tmp/lib-build/src'
make: *** [all] Error 2

-------
上面这个问题解决了,我是修改了 libtool的hardcode_libdir_flag_spec定义,即:
#hardcode_libdir_flag_spec="\`test -z \"\$SCOABSPATH\" && echo \${wl}-R,\$libdir\`"
hardcode_libdir_flag_spec=""

libxml2的安装也会这样,把他同样干掉就行了,模拟程序测试ok,db2也启动正常。非常感谢sunlan和snow888的指导,本来要放弃db2了,太谢谢你们了!!!!!!

[ 本帖最后由 chunlind 于 2007-9-26 12:31 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-11-13 11:35 |只看该作者

102531

支持楼主,请各位unix爱好者加群号102531,强烈欢迎ChinaUnix各位楼主、精华区牛人的加入!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP