中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > Linux > Linux综合
GCC 2.8.0 for openVMS/Alpha 6.2/7.1安装
作者:未知 时间:2005-09-13 22:15 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:GCC 2.8.0 for openVMS/Alpha 6.2/7.1安装
This is a full release of the GNU Compiler System for the openVMS/Alpha 6.2
or 7.1 environment. A release for other openVMS versions and for openVMS/VAX
will be made later.

转载于:http://www.tmk.com/ftp/vms-freeware/gcc-for-alpha/installation

GNU C Compiler Version 2.8.0 for openVMS/Alpha 6.2 and 7.1

Provided by Klaus Kaempf (kkaempf@progis.de)


Installation Instructions


This is a full release of the GNU Compiler System for the openVMS/Alpha 6.2
or 7.1 environment. A release for other openVMS versions and for openVMS/VAX
will be made later.


If you're used to GNU C on openVMS/VAX 


It is assembled from various pieces of software that are all freely available
under the GNU public license.

GNU Make 3.76
GNU Binutils 2.8 (nm, objdump, size, strings)
GNU Assembler 2.8
GNU C 2.8.0
GNU C++ 2.8.0
GNU libg++ 2.8.0

Source for this software isn't available on ftp.progis.de yet, look for it on
prep.ai.mit.edu or any of it's mirror servers

All programs are compiled with the GNU compiler.


The software is packaged in .ZIP format to conserver VMS file attributes and
to make the installation very easy. If you don't have UNZIP for VMS, get it from
'ftp.progis.de/pub/vms/utils/unzip.exe' and install it as a foreign command. Be sure
to use the binary format with ftp !

For GNU C on openVMS/Alpha 6.2 you'll need the following files:

ftp.progis.de/pub/vms/gnu/6_2/bin.zip
ftp.progis.de/pub/vms/gcc/6_2/gcc-2_8_0.zip
ftp.progis.de/pub/vms/gcc/gnu_setup.com
ftp.progis.de/pub/vms/gcc/login.com

For GNU C on openVMS/Alpha 7.1 you'll need the following files:

ftp.progis.de/pub/vms/gnu/7_1/bin.zip
ftp.progis.de/pub/vms/gcc/7_1/gcc-2_8_0.zip
ftp.progis.de/pub/vms/gcc/gnu_setup.com
ftp.progis.de/pub/vms/gcc/login.com

For GNU C and GNU C++ on openVMS/Alpha 6.2 you'll need:

ftp.progis.de/pub/vms/gnu/6_2/bin.zip
ftp.progis.de/pub/vms/gcc/6_2/gxx-2_8_0.zip
ftp.progis.de/pub/vms/gcc/gnu_setup.com
ftp.progis.de/pub/vms/gcc/login.com

GNU C++ for openVMS/Alpha 7.1 isn't available yet.

*** Remember to set your ftp to 'IMAGE' or 'BINARY' ***

1. Creating a directory for GNU

This release follows more closely the GNU naming scheme for directories as
used on un*x systems. This allows for easy installation of other gnu software
and makes administration more clearly.
All files are installed below GNU_ROOT:[000000] which serves as the '/usr/local'
directory tree entry point in un*x gnu installations.
Below that, the following directories are typically needed:

GNU_ROOT:[BIN]		gnu .exe files
GNU_ROOT:[CLD]		vms .CLD files for gnu utilities
GNU_ROOT:[INCLUDE]	non compiler specific include files (like flexlexer.h from flex)
GNU_ROOT:[SHARE]	shared files (like bison skeleton files)
GNU_ROOT:[LIB]		non compiler specific library files
GNU_ROOT:[INFO]		emacs .info files
GNU_ROOT:[ALPHA-PROGIS-VMS_6_2]
			target specific compiler files
GNU_ROOT:[ALPHA-PROGIS-VMS_6_2.2_8_0]
			target and compiler version specific files.
			The logical GNU_CC_LIBRARY points to this directory.
GNU_ROOT:[ALPHA-PROGIS-VMS_6_2.2_8_0.INCLUDE]
			gnu c compiler specific include files.
			The concealed logical GNU_CC_INCLUDE points to this directory.
GNU_ROOT:[ALPHA-PROGIS-VMS_6_2.2_8_0.GXX-INCLUDE]
			gnu c++ compiler specific include files.
			The concealed logical GNU_GXX_INCLUDE points to this directory.
			

You must create a directory for GNU_ROOT and put 'gnu_setup.com' into this directory.

Then set your default directory there (with $ set def) and execute the following DCL commands:

$ define GNU_CC_VERSION 2_8_0
$ @GNU_SETUP

This sets up all needed logicals.

Now set your default directory to GNU_ROOT:[000000]

$ set def GNU_ROOT:[000000]


2. Installing GNU utilities

Unpack BIN.ZIP below GNU_ROOT:[000000] with

$ set def GNU_ROOT:[000000]
$ unzip BIN.ZIP

This creates the directory GNU_ROOT:[BIN] and extracts the following files to it

GNU_ROOT:[BIN]AS.EXE		gnu assembler 2.8
GNU_ROOT:[BIN]GASP.EXE		gnu assembler preprocessor 2.8
GNU_ROOT:[BIN]MAKE.EXE		gnu make 3.76
GNU_ROOT:[BIN]NM.EXE		gnu nm 2.8
GNU_ROOT:[BIN]OBJDUMP.EXE	gnu objdump 2.8
GNU_ROOT:[BIN]SIZE.EXE		gnu size 2.8
GNU_ROOT:[BIN]STRINGS.EXE	gnu strings 2.8
GNU_ROOT:[BIN]GCC.EXE		gnu c compiler driver, first part
GNU_ROOT:[BIN]GCC.COM		gnu c compiler driver, second part


3. Installing the C-Compiler

If you also want the C++ compiler, skip to step 4.

Unpack GCC-2_8_0.ZIP below GNU_ROOT:[000000] with

$ set def GNU_ROOT:[000000]
$ unzip GCC-2_8_0

This creates the directory GNU_ROOT:[ALPHA-PROGIS-VMS_6_2.2_8_0] (named
GNU_CC_LIBRARY below) and extracts the following files to it:

GNU_CC_LIBRARY:cpp.exe		gnu c preprocessor
GNU_CC_LIBRARY:cc1.exe		gnu c compiler
GNU_CC_LIBRARY:crt0.obj		ansi c compatible startup file
GNU_CC_LIBRARY:crt1.obj		dec c compatible startup file
GNU_CC_LIBRARY:libgcc.olb	gnu c compiler library
GNU_CC_LIBRARY:macrosc.vms	gnu c preprocessor macros
GNU_CC_LIBRARY:[include]	gnu c include files


4. Installing the C++-Compiler

Unpack GXX-2_8_0.ZIP below GNU_ROOT:[000000] with

$ set def GNU_ROOT:[000000]
$ unzip GXX-2_8_0

This creates the directory GNU_ROOT:[ALPHA-PROGIS-VMS_6_2.2_8_0] (named
GNU_CC_LIBRARY below) and extracts all the files from GCC-2_8_0.ZIP (see
step 3 above) and the following files to it:

GNU_CC_LIBRARY:cc1plus.exe		gnu c++ compiler
GNU_CC_LIBRARY:crtbegin.obj		start hook for static constructors
GNU_CC_LIBRARY:crtend.obj		end hook for static constructors
GNU_CC_LIBRARY:gxx_main.obj		gnu c++ startup file
GNU_CC_LIBRARY:libgccplus.olb		gnu c++ compiler library
GNU_CC_LIBRARY:macroscc.vms		gnu c++ preprocessor macros
GNU_CC_LIBRARY:[gxx-include]		gnu c++ include files


5. Changes in your LOGIN.COM

The GNU compiler setup and the definition of foreign commands is done
with the file LOGIN.COM
This should be executed every time you log in, so it is best included
in your own login.com


6. Working with the compiler

GNU C isn't a direct 'drop-in' replacement for DEC C although it understands
most of the parameters. If you want to pass special parameters to the GNU preprocessor,
add them with /cpp="parameter". Passing parameter to the C compiler cc1 is done
with /cc1="parameter".

By default, GNU C uses the IEEE floating point format on Alpha.


7. Linking programs

Linking object files to make an executable isn't easy but GNU Make has default
rules for most cases. If you have a source file called 'program.c', running
'make program.exe' will do all needed work for you.

GNU C uses the DEC C runtime library as the standard C library. Get the latest version
as there are *lots* of bugs in DECCRTL.OLB, especially in the stdio part. See
www.services.digital.com for updates.

A typical link command for an object file 'cprogram.obj' would be:

link/exe=cprogram.exe cprogram.obj,			! gnu c compiled program
		      GNU_CC_LIBRARY:libgcc.olb/lib,	! gnu c compiler utility routines
		      sys$library:vaxcrtl.olb/lib,	! standard C routines
		      GNU_CC_LIBRARY:crt0.obj 		! startup file

The DEC C runtime library (DECCRTL) is linked automatically.

The handling of exit values is different between VMS and the rest of the world.
VMS uses odd values for 'success' and even values for 'failure'. Almost all other
OS use zero for 'success' and non-zero for 'failure', so do most C programs.
So running a standard C program which returns '1' for failure isn't recognized
on VMS as an error. The startup file 'crt0.obj' doubles the exit code from 'main()'
before returning the value to VMS. So programs returning a non-zero exit code
are guaranteed to return an odd value to VMS, signalling 'error'.
If you link a VAX C or DEC C program, replace crt0.obj by crt1.obj in the link command.


Linking C++ programs is a different issue alltogether. Since C++ has to go through
all static constructors *before* calling main(), a 'constructor chain' has to be
build up. This is done with the files crtbegin.obj, which must be linked before the first
GNU C++ compiled file, and crtend.obj, which must be linked after the last GNU C++
compiled file. The startup file 'gxx_main' links all constructors together and
executes them to make sure all static objects are properly initialized.

Because of this, linking a C++ program is complicated:

link/exe=cxxprogram.exe GNU_CC_LIBRARY:crtbegin.obj,		! start hook for constructor chain
			sys$disk:[]cxxprogram.obj,		! gnu c++ compiled program
			GNU_CC_LIBRARY:libstdcxx.olb/lib,	! gnu c++ standard library
			GNU_CC_LIBRARY:libgccplus.olb/lib,	! gnu c++ compiler utility routines
			GNU_CC_LIBRARY:crtend.obj,		! end hook for constructor chain
			sys$library:vaxcrtl.olb/lib,		! standard C routines
			GNU_CC_LIBRARY:libgcc.olb/lib,		! gnu c compiler utility routines
			GNU_CC_LIBRARY:gxx_main.obj		! startup file

A. Reporting bugs


The GNU compiler system based on GNU C 2.8.0 on openVMS/Alpha has bugs. Period.

If you need a stable compiler with professional support, think about purchasing
the GNUPRO 64 compiler system from proGIS Software. Mail to info@progis.de or
visit the web site at http://www.progis.de.
I can only give support for the free version as time permits.


However, it passes the GNU c-torture test and compiles itself and all other
mentioned gnu utilities.

If you run into a bug, there are three traps you might have fallen into.

- Bugs in the GNU compiler itself
  If you find a bug in the GNU compiler itself, you should wait for the next
  version which is planned for end of january 1998.

- Bugs in the GNU compiler port to openVMS/Alpha
  Get in contact with me (kkaempf@progis.de) and I will try to help you out.

- Bugs in the include files.
  This will most certanly happen if you use VMS specific include files. All of
  them are based on the freely available include file set for openVMS/*VAX*
  If ported most of the files and added a comment at the beginning of the file.
  If you use a file without such a comment, mail me for a replacement.


**** IMPORTANT ****

If you report a bug to me, *** DON'T *** send me your source code but try to
explain what's going wrong in english (or better in german :-)

Please start the subject with '[GNUC]' !

!!!! Mail with more than about 50 lines of text go into the bit bucket !!!!

If I need the source, I will tell you.


Have fun !

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有