Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191937
  • 博文数量: 26
  • 博客积分: 2031
  • 博客等级: 大尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 22:13
文章分类

全部博文(26)

文章存档

2015年(1)

2013年(1)

2012年(1)

2011年(1)

2010年(17)

2009年(5)

我的朋友

分类: C/C++

2010-02-04 00:05:11

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

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 2000 或 Windows XP 系统:

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

/****************************************************************

需要设置的两个环境变量的命令就如下所写:

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)


一个被称作RHIDE,专属DJGPP的IDE,不久前向所有DJGPP
用户发布了。它具有Turbo C风格的IDE界面,自动缩进,语句着色,高亮
显示语句,自动调用DJGPP编译器,自动生成Makefile,可以方便地阅读在线
文档。而且更激动人心的是,RHIDE还集成了如同GNU Debugger (gdb)一
般强大的高度集成的调试环境。因为RHIDE还是一个新生的软件,现在还
有众多BUG等待调试。


调试
---------

如果需要调试程序,你必需在编译时加入参数开关`-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'来调用
帮助。

阅读(2781) | 评论(0) | 转发(0) |
0

上一篇:USB标准命令请求

下一篇:遍历PCI设备

给主人留下些什么吧!~~