免费注册 查看新帖 |

Chinaunix

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

[SCO UNIX] sco下成功编译gcc和libxml2 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-23 18:01 |只看该作者 |倒序浏览
经过一个星期的努力,终于搞定了这个问题,求人难啊...也受别人帮助,现将自己的过程写下来供在用到的人参考下(综合借鉴了其它人的一些贴子):
版本:
scounix 5.0.6
gcc-3.3.3
libxml2-6.27
 
  libxml2的编译环境需要GCC的支持,而且据snow888说的要3.3.0以上的版本,所以装的是3.3.3.

1.gcc-3.3.3的安装:
 参照GCC官网上的这个贴子:http://gcc.gnu.org/ml/gcc 004-04/msg00077.html,内容如下:
This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav:         [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav:         [Date Prev] [Date Next]         [Thread Prev] [Thread Next]
Other format:         [Raw text]
Successfull GCC Installation on SCO OSR5 v5.0.6

    * From: "Pete M. Wilson" <wilsonp at drhsi dot org>
    * To: gcc at gcc dot gnu dot org
    * Date: Thu, 1 Apr 2004 21:06:18 -0500
    * Subject: Successfull GCC Installation on SCO OSR5 v5.0.6

Installed GCC 3.3.3

config.guess:
i386-pc-sco3.2v5.0.6

gcc -v:
Reading specs from
/var/opt/K/SCO/Unix/5.0.6Ga/usr/local/gcc3/bin/../lib/gcc-lib
/i386-pc-sco3.2v5.0.6/3.3.3/specs
Configured with: ../gcc-3.3.3/configure --prefix=/usr/local/gcc3
--with-gnu-as
Thread model: single
gcc version 3.3.3

I downloaded the full compiler collection and didn't turn off any languages
that I know of - it appears that f77, c++ and c were built.

The install was on SCO OpenServer v5.0.6 with rs506a installed. The
host/target specific installation notes are out of date.

In order to install the previous pre-compiled SCO distribution of gcc and
get it to work correctly, I needed
      OSS646B - Execution Environment Update
      gnutools v5.0.7Kj - this replaces OSS658A, which is no longer
available. It does not install over Skunkware 2000, so I suggest making hard
links from /usr/local/bin to /usr/gnu/bin for all files in /usr/gnu/bin.
      gwxlibs-1.3.2Ag - this replaces OSS631B.It is the Supplemental
Graphics, Web and X11 Libraries.

It may be possible to link /usr/local/bin/ar to /bin/idar, as gnutools
doesn't seem to include all of binutils. I installed and compiled binutils
first, using the ar bootstrap method described in binutils\README.

"To me, success can be achieved only through repeated failure and
introspection. In fact, success represents 1 percent of your work and
results from the 99 percent that is called failure."
- Soichiro Honda
Pete M. Wilson
(434) 799-4570
Network & Systems Manager
Danville Regional Medical Center

大体意思是要先安装以下东西:
1.1. Install rs506a: Release Supplement 5.0.6A.
       Download from: ftp://ftp.sco.com/pub/openserver5/rs506a.
1.2. Install oss646c: Execution Environment Supplement.
    Download from: ftp://ftp.sco.com/pub/openserver5/oss646c.
1.3. Install gwxlibs-1.3.2.Ag: Supplemental Graphics, Web and X11 Libraries supplement.
    Download from: ftp://ftp.sco.com/pub/openserver5/opensrc/gwxlibs-1.3.2Ag.
1.4. Install gnutools-v5.0.7kj: GNU Development Tools supplement.
    Download from: ftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj.
1.5.Install gcc-3.3.3

说明:1.4安装好了后就能用gmake,以下的编译都用gmake

2.以下内容纯属他人东西(由sunlan发表在china unix上):
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

.        SCO OpenServer、UnixWare下libxml2库的编译

1.1.        编译libiconv
无论是OpenServer还是UnixWare,SCO的产品对于中文环境的支持都做得不是很好。虽然两者都提供了对iconv系列函数的实现,但能支持的字符集都相当有限,尤其是不能对gbk、gb18030等汉字字符集进行转换,给在XML中使用中文带来了困难。
为此,在libxml2库编译的过程中必须使用外带的iconv库替代操作系统所自带的iconv库。我所用的iconv支持库是libiconv-1.10。这个库的源代码能从下面链接下载:
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
当然,也可以使用其他版本的libiconv库。
除提供对西欧字符集的支持外,libiconv库还提供了对各种亚洲字符集(包括汉字、日文、韩文)的支持:
Chinese
EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS, ISO-2022-CN, ISO-2022-CN-EXT
Japanese
EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
Korean
EUC-KR, CP949, ISO-2022-KR, JOHAB
libiconv的编译过程很简单。首先,将源码包解压、解包,缺省解包后的路径为libiconv-1.10。进入libiconv-1.10目录,执行
        ./configure --enable-static=yes
增加”—enable-static=yes”选项是为了生成静态库。完成配置后,执行make编译libiconv库。
完成编译后,可以通过”make install”命令安装libiconv环境。
1.2.        编译libxml2
最新版本libxml2的源代码可以从www.xmlsoft.org获得。此处所使用的版本为libxml2 2.6.19。
在编译前需要定义环境变量LD_LIBRARY_PATH,将libiconv.a所在的目录加入到环境变量中。这是因为libxml2的 configure配置脚本是从LD_LIBRARY_PATH所定义的路径中搜索libiconv.a,至于libiconv是静态库还是动态库倒没有关系。
其次,在SCO OpenServer下编译libxml2时,由于OpenServer的系统头文件没有定义PATH_MAX,需要在testModule.c中手工增加PATH_MAX的定义:
   #ifndef PATH_MAX
    #ifdef _POSIX_PATH_MAX
    #define PATH_MAX _POSIX_PATH_MAX
    #else
    #define PATH_MAX 255
    #endif
    #endif
PATH_MAX的值也可以定义为1024或其它的值,但应注意不要超过系统上限。
在UnixWare下不需要自己定义PATH_MAX。
接下去是运行configure配置脚本。在做这一步操作时必须要使脚本正确地找到libiconv的位置。有几种不同的方法可以供采用:
方法一:
./configure --with-iconv=/home/test/libiconv-1.10
其中”--with-iconv”用于指定iconv的源代码的存放目录,我们在这里假定/home/test/libiconv-1.10。需要注意的是这一目录必须使用绝对路径,否则编译时可能会出错。
方法二:
        ./configure CFLAGS=”-I/home/test/include”
        或者先设置环境变量CFLAGS=”-I/home/test/include”,然后直接执行
        ./configure
其中/home/test/include是libiconv的头文件iconv.h所在的目录。
以上两种方法的实质都是要找到正确的liniconv的头文件和支持库,用于替换系统自带的iconv。
configure完成环境配置后需要注意提示的信息中是否有以下信息:
   checking for iconv.h... yes
    checking for iconv... no
    checking for iconv in -liconv... yes
其中1、3行必须为”yes”,否则说明未能正确地找到iconv。第二行无关紧要。
接下去的工作就是执行make了。通过前面所说的几步操作,一般情况下都能正常完成编译过程。
1.3.        编译后的验证
我们的目标是获得能支持中文编码的xml支持库,因此测试的重点也主要放在对中文编码的xml文件上。
首先,运行libxml2自带的测试程序testapi,用于测试libxml2提供的函数的可用性。在使用SCO Openserver自带的iconv时,testapi程序会因为无法进行字符集转换而报许多错误;在使用libiconv替换后可以正常的通过测试。
第二,使用xmllint进行xml文件解析。xmllint是编译libxml2时得到的“副产品”。
手工创建一个xml文件(假设名称为a.xml),内容如下:
<?xml version=”1.0” encoding=”gbk”?>
<body>测试数据</body>
执行xmllint a.xml。正常的情况下应该能显示xml文件的内容。然后把xml文件中的encoding改为utf8,再次执行xmllint,会出现下面的提示:
a.xml:2: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xB2 0xE2 0xCA 0xD4
<body>测试数据</body>
这就说明编译出的程序确实能支持中文编码。
最后,自己写程序验证。参照libxml2提供的示例,最简单的程序基本如下:
xmltest.c:
#include <stdio.h>

#include "libxml/parser.h"
#include "libxml/tree.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 );

}
cc –belf –o xmltest xmltest.c –I/home/test/include –L/home/test/lib –lxml2 –liconv –lm –lsocket
编译成功后执行xmltest a.xml,并重复类似xmllint所做的测试。当然,也可以编写更全面的测试程序进行测试。


补充说明:安装好gnu tool后,上面所说的make全部变成gmake,运行测试的时候如果有头文件不能找到的情况需要自己指定到相应的目录下

[ 本帖最后由 cswallow 于 2007-3-23 18:04 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP