把 Borland Turbo c 的源代码移植到GNU gcc
内容
TurboC 的大概内容
TurboC为何而生??
其他方法(Alternate Approaches, 不知道是不是这样翻译)
TurboC的特点与不足
下载和安装TurboC
未来的计划
为什么要用这么可爱的logo呢?
TurboC的大概内容
TurboC是一个可连接的库同时也是一大堆C语言的头文件,是为了更容易地在GNU gcc,也就是在类Unix系统上,编译那些用原来在Turbo C编译器编译的MS-DOS系统的C语言的源文件,概括如下:
通过Turbo C的conio.x里的ncurses的实现
通过Turbo C的graphics.h里的Xlib的实现
一些其他的函数和为了方便的节省时间的特征
一种克服了Turbo C和GUN gcc的整型数据类型差异的方法
但不管怎么说,这也不是一个完美的解决方案,但是你会发现它还是有用的.你可以在它相关的早期的发展阶段找到graphics.h的帮助.
TurboC遵于GNU的LGPL协议(Lesser General Public License).
TurboC为何而生??
我写过很多基于MS-DOS的用Borland公司的Turbo C 2.0编译器编译的程序.当由于爱好的原因,我想把其中一些代码以自由软件的形式存在,我便想到了把这些代码发布在GPL下,是MS-DOS的代码,慢慢的把它们转换成类Unix系统的代码.很明显,预先直接的去转换(MS-DOS--> *nix)是一件很耗时的工作.而且渐渐的,我遇到了困难,因为发布一个别人无法理解其源代码的的软件并不是一件好事.而我最喜欢的发布开源的频道fleshmeat不"吃"MS-DOS,因此它很文雅的拒绝了我的MS-DOS项目.
很显然,现在的需要是更底层的,然后我就想到了我可以提供合适兼容的Turbo C的库和头文件,这样,把Turbo C的源码引到类Unix系统就会简单得多.也就是说,提供旧版本的MS-DOS的类Unix版本是一件相对容易很多的事情.但究竟这个容易去到哪儿,跟你要引进的程序的很多东西都有关.
其他方法(Alternate Approaches, 不知道是不是这样翻译)
对于conio.h的功能,你可以考虑使用pablo Vidal的UConio的库来代替.但是我没有使用过,所以无法说出其好长与不足,不过它肯定提供比TurboC提供一个少得多的Conio的功能的子集.而且它也会要求你更大范围的修改你的源代码.
Borland公司已经有了(或许会提供)一个Linux版本的C++编译器,这样的话,它的nature,价格和这个编译器的目标工作平台将是一个谜.一种假设(象Kylix)就是它将基于wine的,所以它只可以工作在x86的系统上面.但是,如果它包括了在TurboC上实现的库,那样,老实说,他提供了一种更简单的的方法来把你Turbo C的源代码引入到Linux上,但如果这样的话,它将会是非常庞大的.对我自己来说,尽管已经是一个很久的borland公司的用户了,但我还是非常希望用GNU gcc来编译我的程序.
对于graphics.h的功能,有一个Csaba Biegl, Michael Goffioul, and Hartmut Schirmer的GRX库.直到graphics.h的功能还有一点还没写完的时候,我才发现了这个库,因此我还没来得及很充分的测试它.它的目标是要成为一个多平台的2D图像库.它的官网没有宣传(甚至没有提到)与Turbo C的兼容性.然而,它只包括了非常少量的与Turbo C同名(当然还有相同功能)的功能.
当然,如果你只是感兴趣在类Unix系统上运行你的程序,同时也反对把其他程序引到类Unix系统上,那你也可以在linux版本的DOS emulators 下运行你已经存在的程序.DOS emulation使用了 dosemu 和 freedos ,在x86系统上工作得非常好,同时 bochs 和 freedos在非x86类Unix系统上工作的也不错(但可能有点慢).
TurboC的特点与不足
特点
TurboC 提供了Turbo C的conio.h头文件控制台的大部分功能,与相关的ncurses的功能一一对应.(当然,除了scanf之外的conio.h的功能都有提供)
TurboC提供了Turbo C的graphics.h头文件"BGI"的大部分功能.到目前为止(2002 06 08),除了临时缺乏stroked-font的支持,这些特点的实现已经完成的很彻底了.
TurboC提供了这些丢失的功能诸如strupr和strlwr的功能的很少的东西,
请确认可提供的方法的完整列表:
不足
请参考bugs和issues的完整列表.到目前为止,这个库文件只是我在特定的我写的Turbo C的程序所需要的那么完整,随着我引入的我以前的程序到类Unix 系统的多起来,TurboC的库大概才会愈来愈完整.到目前为止,本质上conio.h的支持已经完整了,除了显示文本外,graphics.h的支持也本质上完整了.
在已经引进的程序里,除非你使用了xterm,要不然文本控制台的窗口指挥逻辑上自动调好尺寸,并不会physically地去调整.如果你用了诸如KDE控制台之类的其他控制台,用户必须人为地去调整了.
Borland的Turbo C是16位的编译器,但是我目标的GNU gcc编译器是32位的,结果产生了整型的数据类型的差异.TurboC用宏的方法处理了(但愿)更普遍的情况.没有处理的情况会在编译的时候报错,用户必须手动去修改.在用户的页面会被详细介绍.
用基于诸如 getcha, cprintf或其他的控制台来混合基于流的功能(如 getchar, printf,其他),很可能会不工作.你也可以浏览usage page.
下载并安装TurboC
下载源代码
*Most-current development code (20040218) TurboC-dev.tar.gz
20020602 snapshot TurboC-20020602.tar.gz
20020419 snapshot TurboC-20020419.tar.gz
20020418 snapshot TurboC-20020418.tar.gz
20020323 snapshot TurboC-20020323.tar.gz
20020317 snapshot TurboC-20020317.tar.gz
20020312 snapshot TurboC-20020312.tar.gz
tarball里包括了一个教TurboC-source的文件夹,你可以简单的在这个目录下用make来编译库.但必须是GNU gcc或者用gmake(例如在FreeBSD或Mac下)来编译(提示,在FreeGSD下,你要编辑makefile和注释/反注释开头的若干行,你会很容易看到的),我已经检验了最近释出的snapshot(不是开发者的snapshot)并在以下系统测试了程序:
Linux Intel 'x86 (SuSE 8.0)
Linux PowerPC (SuSE 7.3)
FreeBSD (4.5)
(早期的TurboC的库好像在FreeBSD上工作的效果不怎么好,请升级到20020420的版本,并且在运行引入的程序的时候按照下面的步骤).最近释出的snapshot只在SuSE8.2上测试过.
把这个库(libTurboC.a and libTurboCu.a)放在你系统放库的地方--通常在 /usr/lib.把所有的头文件放到它应该放的地方--通常是 /usr/include.又或者,你也可以添加它们的链接到这些目录.又或者,把它们放到你喜欢的地方,然后在gcc里用参数 -L和-I来连接它们.
在我的系统,我是这么做的.
cd ~
tar -xzvf TurboC-dev.tar.gz
cd TurboC-source
... 编辑FreeBSD的makefile ...
make (or gmake)
su
ln -s *.h /usr/include
ln -s libTurboC.a /usr/lib
exit
你会发现(例如,在FreeBSD)如果你在你引入的程序力#include了TurboC的头文件,你的编译器会报错:标识符链接太深(symbolic links being "too deep").如果是这样的话,你可以把上边的ln命令的参数"-s"去掉.
另外,编译Makefile当然会假定X-window系统的头文件和库;如果这个假定是错的话,你就要你的编译器加上参数"-L"和/或者"-I"来调整.X-window系统必须编译全部的库,或者你要运行你的程序,如果你要用到graphics.h的功能.如果你不打算使用这些功能,你可以通过编辑Makefile和去掉编译器参数的"-DWITH_X"在没有X的系统上引入和编译你的程序.
未来的计划
嗯,很明显这种项目是没什么前途的,它的计划只不过是从一个古老的编译器里引入它的代码.然而,我还是会在我这个项目里根据需要增加一些特性的.我不会浪费精力去写一些没有在我Turbo C程序力出现过的功能的,但如果你自己已经写了而又告诉了我,我是很乐意加进去的(把荣辱加给你).
当然,很希望你能把TurboC的bug返回给我,(当然在这之前,去看看Buglist有没有这个问题),我会尽力去改正它们的.
为什么要用这么可爱的logo呢?
这是一幅姐妹在谈话的图片,画家Lynn Rothan的杰作.我试图表达的意思是,它表现了很相似的c编译器 Borland Turbo C和GUN gcc的关系.当然拉,lynn有他自己的意思.请参考他的网站.
分享到:
相关推荐
Borland Turbo系列第三集 Turbo C 1.0 Turbo C 1.5 Turbo C 2.0 Turbo C 2.01
中文名: Turbo C 英文名: Turbo C(2.00/3.00)_install disk 发行时间: 1989年 制作发行: Borland International, Inc.地区: 美国 Turbo C 按安装分类大概有两种版本:一是通过install安装,原汁原味,而且不存在...
Borland Turbo C(经典的C语言编程开发工具)2.0 Build 1205 中文安装版
Borland Turbo C++ 3.0 完整版
Turbo C++是一个Borland C++编译器与IDE。最早的Turbo C++ 产品系列出现在1993年以后,以及于2006年重新发行,具有一个互动的IDE,本质上源自他们的旗舰产品C++ Builder的降级版本。Turbo C++ 2006则发布于2006年9月...
Borland Turbo系列第六集 Turbo Prolog 1.0 Turbo Prolog 1.1 Turbo Prolog 2.0
学习PSiCC2用。解压到硬盘,然后运行INSTALL.EXE并遵照它的安装提示即可。建议把Turbo C++1.01工具套件安装在目录C:\tools\tcpp101\这样可以直接使用PSiCC2所提供的项目文件和MAKE 文件。
Borland Turbo C 4.5 For Win 完全, 可安装
Borland Turbo C 3.0.zip
Borland Turbo C 4.5 For Win 可安装 共三部分 3
Borland Turbo系列第五集 Turbo Basic 1.01 Turbo Basic 1.1 Turbo Basic Editor Toolbox
If you plan to use Turbo Debugger to debug your assembler application, then you must assemble 16-bit files with either TASM.EXE or TASMX.EXE. To produce 32-bit debug information, then you must ...
Borland Turbo系列第四集 (另有Borland C++系列) Turbo C++ 1.0 Turbo C++ 1.01 Turbo C++ 2.0 Turbo C++ 3.0 Turbo C++ 4.0 Turbo C++ For Windows 3.1
使用turboc或者borlandc 软件,C++编写的2048游戏源代码。
Borland Turbo C 4.5 For Win 可安装 共三部分 2
Borland Turbo C++ 3.0 for DOS
Turbo Debugger borland公司的调试器专门调试borland开发工具编写的程序
Borland Turbo系列第二集 Turbo Assembler 1.0 Turbo Assembler 2.0 Turbo Assembler 3.0 Turbo Assembler 4.0 Turbo Assembler 5.0
Borland Turbo系列 Turbo Vision 2.0 Turbo Vision 2.02 Open Source Turbo Tutor 1.0 Turbo Debugger 1.0 16Bit Turbo Debugger 3.1 16Bit Turbo Debugger 5.5 32Bit BGI Toolkit
“Turbo C++ 3.0”软件是Borland公司在1992年推出的强大的——C语言程序设计与C++面向对象程序设计 的集成开发工具。它只需要修改一个设置选项,就能够在同一个IDE集成开发环境下设计和编译以标准 C 和 C++ 语法设计...