免费注册 查看新帖 |

Chinaunix

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

[SCO UNIX] SCO OpenServer下编译及使用GCC 3.0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-07 21:15 |只看该作者 |倒序浏览
1.        说明
本文档适用于在SCO 5.0.6下编译及使用gcc-3.0及gcc-3.0.x。
同样的方法也可用于编译gcc-2.95.x、gcc-3.2.x、gcc-3.3。
本文以gcc-3.0为例说明gcc的编译过程和使用中的部分注意点。

2.        源码的下载
gcc-3.0的源码可以从gcc的官方网站(gcc.gnu.org)及镜像站点下载。
下载后将源码包在SCO下解压、解包。本文中假设解包后的目录为/usr/test/gcc-3.0。

3.        编译前准备
3.1.        操作系统补丁
在SCO OpenServer 5.0.6下编译gcc-3.0不需要打操作系统补丁。如打了OSS646C后编译过程有可能出错。
3.2.        安装GNU Make
使用SCO开发环境自带的make编译gcc时会因为对Makefile中的某些语法无法解析而导致编译失败,因此需要以GNU Make来进行编译。
首先,从GNU官方网站下载GNU Make的源码(目前的最高版本是3.80),在SCO下编译生成make执行码,然后用此执行码替换/bin/make。

4.        配置
为了避免由于误操作破坏gcc的源码,一般将gcc的配置和编译在另外的目录下进行。
在/usr/test下创建gcctmp目录。进入gcctmp目录,执行以下命令:
../gcc-3.0/configure --prefix=/usr/local/gcc-3.0
prefix所表示的是gcc的安装目录。在不使用此参数时,缺省的安装目录是/usr/local。如果可能安装多个版本的gcc,最好将不同版本的gcc安装至不同的目录下。
configure还有许多其他的编译选项,在配置前可以仔细阅读一下INSTALL目录下的文档,根据需要打开或关闭某些选项。

5.        编译
在gcctmp下执行
        make bootstrap
由于gcc系统比较庞大,编译需要较长的时间。

6.        安装
在成功完成gcc的编译后,用su命令切换至root用户,执行
        make install
将gcc安装至/usr/local/gcc-3.0目录下。

7.        安装后的验证
将gcc的安装路径加入执行路径:
        PATH=/usr/local/gcc-3.0/binPATH; export PATH
执行gcc -v,提示以下信息:
Reading specs from /usr/local/gcc-3.0/lib/gcc-lib/i386-pc-sco3.2v5.0.6/3.0/specs
Configured with: ../gcc-3.0/configure --prefix=/usr/local/gcc-3.0
Thread model: single
gcc version 3.0
就说明gcc已经编译、安装完成,可以用来进行程序的开发了。恭喜你!

8.        -belf和-bcoff的兼容
在SCO平台下编译的程序有时需要使用elf或coff格式,这一功能是通过-belf和-bcoff编译选项来控制的。
至迟从gcc-2.95.x起,在gcc官方文档中都会有这样一段关于SCO平台的声明(详见Host/Target specific installation notes for GCC):
Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided.
因此,不要指望gcc能在SCO下生成coff格式的二进制码。更糟的是gcc在SCO OpenServer下运行时如果加上-belf或-bcoff选项会报以下的错误:
gcc: installation problem, cannot exec `cc1': No such file or directory
并由此而导致一些软件包的配置和编译出错。
网上有许多关于这方面的提问,但很少有人回答。其实解决的办法很简单:
1.        以root用户登录,进入/usr/local/gcc-3.0/lib/gcc-lib
2.        ln -s i386-pc-sco3.2v5.0.6 elf
                ln -s i386-pc-sco3.2v5.0.6 coff
完成上面的操作后,就可以正常使用-b选项了。
当然,我们的目的不是为了生成elf格式或coff格式的二进制码(在使用-belf和-bcoff时生成的代码完全相同),而是在使用了-b选项时不至于出错。
此方法也可用于gcc-2.95.x以及其它版本。

论坛徽章:
0
2 [报告]
发表于 2006-03-07 22:37 |只看该作者
感谢~~顶

论坛徽章:
0
3 [报告]
发表于 2006-03-08 09:32 |只看该作者
gcc3.0是用哪个编译器编译生成,SCO自带的行不行?

论坛徽章:
0
4 [报告]
发表于 2006-03-08 09:52 |只看该作者
原帖由 rrwater 于 2006-3-8 09:32 发表
gcc3.0是用哪个编译器编译生成,SCO自带的行不行?


操作系统环境:SCO OS R5.0.6,不加装任何补丁
开发系统:SCO OpenServer Development System (ver 5.1.2A)
使用开发系统自带cc、as、ld,用GNU make替换SCO自带的make。
目前我在此环境下成功编译的gcc最高版本是3.3.1,更新的版本无法以此方法编译。
test> gcc -v
Reading specs from /usr/local/gcc-3.3.1/lib/gcc-lib/i386-pc-sco3.2v5.0.6/3.3.1/specs
Configured with: ../gcc-3.3.1/configure --prefix=/usr/local/gcc-3.3.1
Thread model: single
gcc version 3.3.1

论坛徽章:
0
5 [报告]
发表于 2006-03-08 10:29 |只看该作者
再整个5.07 的 高版本

论坛徽章:
0
6 [报告]
发表于 2006-03-08 12:44 |只看该作者
原帖由 wenlq 于 2006-3-8 10:29 发表
再整个5.07 的 高版本


3.3.1也足够用了。RedHat AS3用的也不过是3.2.3。

论坛徽章:
0
7 [报告]
发表于 2006-03-08 12:55 |只看该作者
下次有空也编译一个试试,现在SCO下装的是SCO站点下载的 2.95

论坛徽章:
0
8 [报告]
发表于 2006-03-09 22:20 |只看该作者
gcc-3.3.1 for SCO OSR 5.0.X Binary下载:
ftp://ftp_sunlandown:12345678@61.156.239.33/sco/gcc-3.3.1.tar.gz
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP