DJGPP的安装及使用说明

来源:互联网 发布:java 0 1 true false 编辑:程序博客网 时间:2024/05/16 14:44

方法一

 先去下载《Linux0.01内核分析与操作系统设计配书光盘》中的DJGPP工具

解压后放到C:\目录就可以(可以放到其它盘的,尝试后请回馈)

下面是设置运行DJGPP和RHIDE的环境变量。在DOS的C盘根目录下的autoexec.bat中添加如下两行

set DJGPP=C:\DJGPP\DJGPP.ENV

set PATH=C:\DJGPP\BIN;%PATH%

(已经可以顺利地在2000和XP中运行)

设置了上述的分环境变量后,重新启动计算机,然后运行RHIDE.

开始->运行->“cmd”->"go32-v2"

方法二

以下

需要下载的文件
----------------

到http://www.delorie.com/djgpp/zip-picker.html可以看到一个基于表单

的说明,其中详细列出了你需要下载的分发包。通常情况下,用户并不需要
源文件,所以如果只是使用DJGPP那么只下载二进制包就足够了。

编译C程序,需要下载djdev203.zip, gcc*b.zip,和bnu*b.zip 。如要使用
C++则还需要下载gpp*b.zip

如果需要查找在线手册,则需要下载txi*b.zip,并且运行工具"info"。如果你使用
的是纯16位DOS则需要安装DPMI服务程序,安装包是csdpmi*b.zip(Windows
,QDPMI,386Max, NWDOS, OpenDOS, OS/2, Win/NT 和 Linux下的 DOSEmu已经提供了
良好的DPMI服务, 所以在这些环境下安装并运行DJGPP并不需要CWSDPMI)详细
信息可以查阅FAQ列表的第四章(下载faq*b.zip,且要保证是完整FAQ列表)
--"Where and What to Downlaod(在哪里并下载些什么)"

如果你使用Windows ME, 2000或者 XP,在2001年11月前的镜像文件很可能不能
正常工作,所以如果你使用以上的操作系统来运行DJGPP,那么确保你下载的是
最新的分发包。


安装
------------

1. 创建一个DJGPP的工作目录,比如说C:\DJGPP. (警告:不要将DJGPP安装到诸如
C:\DEV, D:\DEV这样的目录或子目录下:那将导致它不能工作。详细原因见FAQ
列表 )不要在使用长目录名,或者任何特殊字符,如空格等。

如果你曾安装过1.x版本,最好是放弃使用它,或干脆删除掉它们。当然你也
可以仅仅把它们移动到其它目录下,但是确保移动的目标目录不在你的PATH
环境变量里出现。(据调查,某些BUG报告是因为混用两个版本的DJGPP造成
的,事实上1.x版本中唯一可以保留的文件只有'go32.exe')

如果你使用Windows NT 4.0来运行DJGPP,在安装前,你需要决定你是否想使用
长文件名还是仅仅使用DOS 8.3的文件名格式。如果需要长文件名支持,你需要
在解压DJGPP分发包前,下载并安装TSR驱动程序包(ntlfn*b.zip)。
(译者注:建议不要使用WinNT 4.0来运行DJGPP)

2. 解开所有的压缩包,同时保留目录结构。例如:

pkunzip -d djdev203

unzip32 djdev203

在Windows 9x, Windows/ME, Windows 2000 和 Windows XP下,使用支持长文件
名的解压工具unzip。最新的InfoZip的UnZip, PKUnzip和WinZip都能支持长文件
名。DJGPP站点上的解压工具unzip32.exe同样可以很好地支持长文件名。一个确保
你正确地解压出长文件名文件的方法是,查看include/sys/sysmacros.h:如果你
只看到sysmacro.h那么你的解压工具并不支持长文件名,这时你需要另找一个真正
支持它的解压工具。

你必须在解压时确保,正确地保留了目录结构。 如果你使用的是WinZip,检查
复选框"Use folder names". 如果你使用pkunzip,确信你使用了-d参数开关。

在Windows/NT(NT version 4或者更低的版本,不是WIN2000)下,如果不加挂
TSR的长文件名驱动程序LFN,则unzip并不会正确地解压出长文件名文件,同时
DJGPP也不能访问长文件名的文件。所以在这里,我们推荐使用unzip32.exe,
它将能正确解压。


3. 正确解压完成后,设置环境变量指向在DJGPP安装目录下的文件DJGPP.ENV
并将DJGPP的BIN目录加入PATH环境变量队列中去。

确切的设置环境变量的方法取决于你使用的操作系统:

* 对于 Windows 98 系统:

- 单击 开始;
- 选择 程序->设置->系统工具->系统信息;
- 单击菜单栏上的 工具, 并选择 "系统配置";
- 按照如下所说的编辑 AUTOEXEC.BAT

* 对于 Windows ME 系统:

- 单击 开始, 选择 运行, 输入 msconfig.exe;单击 确定
- 单击 "环境" 分页;
- 编辑 PATH 系统变量将DJGPP 的bin子目录加入;
- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。
(下面还有更详细的介绍)

* 对于 Windows NT 系统:

- 右键单击 "我的电脑", 选择 "属性";
- 单击 环境 分页;
- 编辑 PATH 系统变量将DJGPP 的bin子目录加入;
(如果你不是管理员〈administrator〉,将bin目录加入当前用户的PATH
变量中)
- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。
(下面还有更详细的介绍)

* 对于 Windows 2000 或 Windows XP 系统:

- 右键单击 "我的电脑", 选择 "属性";
- 单击 高级 分页;然后单击 "环境变量"按钮
- 编辑 PATH 系统变量将DJGPP 的bin子目录加入;
(如果你不是管理员〈administrator〉,将bin目录加入当前用户的PATH
变量中)
- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。
(下面还有更详细的介绍)

* 对于其它系统(DOS, Windows 3.x 和 Windows 95):使用标准的EDIT程序
编辑启动盘根目录下的AUTOEXEC.BAT就可以了。

作为编辑AUTOEXEC或全局变量的替代方案,你可能希望创建一个
DJGPP的快捷方式。如果这样做的话,需要创建一个批处理文件(*.bat)
并包含以下介绍的命令行。这种做法适于安装了多个编译系统的计算机。

无论使用哪种方式,我们都假设你将DJGPP安装至C:\DJGPP目录下,这样
需要设置的两个环境变量的命令就如下所写:

set DJGPP=C:\DJGPP\DJGPP.ENV
set PATH=C:\DJGPP\BIN;%PATH%

4. 重新启动。 这样可以使两行命令启用(在 Windows NT ,Windows 2000 和
Windows XP 环境变量即时生效, 所以如果你使用以上系统便无需重启。但是
还是需要关闭正在运行的DOS窗口,然后再次运行一个新的DOS窗口)

5. 运行程序 go32-v2.exe,不加任何参数:

go32-v2

它将报告可供DJGPP使用的DPMI内存及虚拟空间(swap)的大小,就像这样:

DPMI memory available: 8020 Kb
DPMI swap space available: 39413 Kb

确切的数字取决于你安装了多少物理内存,有多少硬盘空间和DPMI服务
程序的能力。 但是,如果go32-v2报告的两项空间加起来少于4MB,请阅读
FAQ列表的3.9节。"How to configure your system for DJGPP"(怎样为
DJGPP配置你的系统)(如果想在已经大于8MB的情况下优化运行
,那么你同样也可以参阅这一部分FAQ)


编译
-----------


GCC是可以在DOS命令行下使用的基于命令行的编译器,可以使用如下命令来编译并
连接单个C程序源文件:

gcc myfile.c -o myfile.exe -lm

-lm参数要求编译器连接时使用lib/libm.a库(三角数学函)。(连接要求需要
显式声明。这意味着,如果你需要使用libm.a就必须在编译时,在命令行结尾
加上参数'-lm')

使用以下命令,从而将C或C++源码编译为OBJ文件:

gcc -c -Wall myfile.c (for C source)

gcc -c -Wall myfile.cc (for C++ source)

这样便编译出文件myfile.o。 参数开关`-Wall'打开了GCC编译器的警告
模式,这些警告信息对于新用户是十分有用的。(GCC也支持其它很多扩展名,
如.cpp。 关于这些可以参阅FAQ的8.4节 "How does GCC recognize the
source language")

使用如下命令行,将多个目标文件(OBJ)编译成为可执行文件:

gcc -o myprog.exe mymain.o mysub1.o mysub2.o

这样便编译出在DOS下的可执行文件`myprog.exe'

可以像这样连接C++程序:

gxx -o myprog.exe mymain.o mysub1.o mysub2.o

这时,程序会自动搜索C++的库,所以你完全不必像上面一样,担心需要设置
有关 C++ 库的参数。

你也可以将编译和连接这两个步骤一起执行:

gcc -Wall -o myprog.exe mymain.c mysub1.c mysub2.c

更多的关于GCC运行参数的资料,可以参阅在线文档。在阅读前,你必需确认
是否正确地安装了Texinfo在线文档阅读工具。(找到txi*b.zip,并阅读下面
有关在线文档的章节)

安装成功后,可以这样查找有关资料:

info gcc invoking


开发环境 (aka IDE)
---------------------------------

诚然,DJGPP并没有一个自己的集成环境。但这也意味着,你可以自由地
选择任何可以运行DOS程序,查看运行后输出的编辑器来作为IDE。许多
程序员都使用一个基于DOS的GNU Emacs与DJGPP协同工作。(可以在
v2gnu子目录中找到它)Emacs 是一个非常强大的编辑器(比如,它拥有内置
的Info阅读机能,这样你就可以不用退出编辑器去阅读DJGPP的在线文档
),当然其它很多免费的编辑器同样也可以胜任IDE的工作。这些准IDE
(包括Emacs)唯一不能胜任的工作就是,进行全屏幕的调试工作。

一个被称作RHIDE,专属DJGPP的IDE,不久前向所有DJGPP
用户发布了。它具有Turbo C风格的IDE界面,自动缩进,语句着色,高亮
显示语句,自动调用DJGPP编译器,自动生成Makefile,可以方便地阅读在线
文档。而且更激动人心的是,RHIDE还集成了如同GNU Debugger (gdb)一
般强大的高度集成的调试环境。因为RHIDE还是一个新生的软件,现在还
有众多BUG等待调试。所以如果您感兴趣的话,请访问:
http://www.tu-chemnitz.de/~sho/rho/rhide.html
来获取最新的资料。
(译者注:RIHID已经成为广泛使用的工具包了,建议大家都下载并掌握
它的使用)


调试
---------

如果需要调试程序,你必需在编译时加入参数开关`-g':

gcc -c -Wall -g mymain.c
gcc -c -Wall -g mysub1.c
gcc -c -Wall -g mysub2.c

当然也可以在连接时加入参数`-g':

gcc -g -o myprog.exe mymain.o mysub1.o mysub2.o

(注意:如果使用DJGPP v2.01版本时,并没有任何必要将程序输出成COFF
以便调试程序。(省略文件名中的`.exe'后缀名就可以达到这个目的) v2.01版
及其之后版本的调试器完全有能力直接读取可执行文件来进行调试,如同调试C
OFF格式文件一样。当然,如果你无法完全明了这是什么意思,也无需担心。)

然后在调试器下运行你的程序:

fsdb myprog.exe

gdb myprog.exe
再或
edebug32 myprog.exe

(如果你希望使用GDB调试程序,那么你需要下载gdb*b.zip)
FSDB有自己的帮助画面,可以按下F1调用帮助。 GDB的帮助文件只能使用
Info来阅读。Edebug32是一个很少使用的集成调试器,运行后按'h'来调用
帮助。

原创粉丝点击