[RTOS 学习记录] 开发工具 Borland C/C++ 3.1 精简版

本文介绍了如何使用BorlandC/C++3.1编译器处理嵌入式实时操作系统μCOS-II的示例程序,包括单文件和多文件程序的编译、链接过程,并提供了详细的步骤和示例。
摘要由CSDN通过智能技术生成
开发工具

image-20240420165417775

这篇文章是我阅读《嵌入式实时操作系统μCOS-II原理及应用》后的读书笔记,目的是作为个人后续回顾复习使用。

1 BC3.1(Borland C/C++ 3.1)精简版使用示例

1.1 示例程序

test.c 存放路径:E:\Dosbox\exp2-1\test.c

#include <stdio.h>

int main(void)
{
    printf("Hello, world!\n");
    
    return 0;
}

1.2 编译示例程序

启动DOSBox,由于事先在DOSBox的配置文件DOSBox 0.74-3 Options.bat底部添加了如下命令:

# 意为把E:\Dosbox目录作为虚拟C根目录
MOUNT C: E:\Dosbox
# 配置环境变量
set PATH=%PATH;C:\BC\BIN;
C:

image-20240420143150140

所以,DOSBox启动后会自动挂载E:\Dosbox为C:根目录,并将E:\Dosbox\BC\BIN所在文件夹设置为环境变量,即BC3.1可执行文件所在目录,如下图所示:

image-20240420143651625

因此,现在我们可以将路径切换到test.c文件所在位置,即使用命令cd .\exp2-1,如下图所示:

image-20240420143926940

然后使用这条命令:bcc -c -ml -Ic:\bc\include -Lc:\bc\lib test.c 即可将C源程序编译成obj目标文件,如下图所示:

image-20240420144512182

该条命令中的bcc是编译命令,它会执行BC\BIN目录下的bcc.exe文件;-c 表示将C源文件编译成目标文件OBJ;-ml 表示指定内存模式为large模式;-Ic:\bc\include 表示指定包含头文件路径为 c:\bc\include-Lc:\bc\lib 表示指定库文件路径为 c:\bc\libtest.c 表示等待编译的C源程序的文件名称。编译之后,当前目录下会生成一个 test.obj 文件,即目标文件,如下图所示:

image-20240420150201099

1.3 目标文件链接成可执行文件

为了得到扩展名为exe的可执行文件,我们还需要将test.obj目标文件和生成可执行文件所需的其他目标文件链接在一起。使用这条命令:tlink c:\bc\lib\c0l.obj test.obj,test,test,c:\bc\lib\cl.lib 即可启动BC提供的链接器tlink.exe,如下图所示:

image-20240420150744339

该条命令中的tlink是链接命令,它会执行BC\BIN目录下的tlink.exe文件;c:\bc\lib\c0l.obj 表示使用支持ml内存模式的启动模块c0l.obj;test.obj 表示上一个步骤(编译)得到的目标文件的文件名称;test,test 中的第1个test表示最终可执行文件的文件名称,第2个test表示map文件的文件名称;c:\bc\lib\cl.lib 表示使用和ml模式对应的运行库cl.lib。链接后,最终生成了一个可执行文件test.exe和一个文件test.map,如下图所示:

image-20240420151603206

使用命令test.exe运行编译链接得到的可执行程序,屏幕上显示出“Hello, world!”字符串,如下图所示:

image-20240420151801523

2 多文件程序的编译、链接

使用C语言编写的实际项目中,一个工程通常会采用模块化的方法,因此会有多个源文件。我们需要通过编译、链接这两个步骤才能得到最终的可执行文件,接下来就使用简单示例展示一下多文件程序的生成过程。

假设现在有一个应用程序,该应用程序由3个源文件组成。

  1. ma 程序代码
    ma.h

    // ma.h
    #ifndef _MA_H_
    #define _MA_H_
    
    void a_print();
    
    #endif
    
    

    ma.c

    // ma.c
    #include <stdio.h>
    #include "ma.h"
    
    void a_print()
    {
        printf("aaaaa\n");
    }
    
    
  2. mb 程序代码
    mb.h

    // mb.h
    #ifndef _MB_H_
    #define _MB_H_
    
    void b_print();
    
    #endif
    
    

    mb.c

    // mb.c
    #include <stdio.h>
    #include "mb.h"
    
    void b_print()
    {
        printf("   bbbbb\n");
    }
    
    
  3. test.c 程序代码

    // test.c
    #include "ma.h"
    #include "mb.h"
    
    int main(void)
    {
        for (; ;)
        {
            a_print();
            b_print();
        }
    }
    
    

2.1 编译

使用这条命令:bcc -c -ml -Ic:\bc\include -Lc:\bc\lib ma.c 编译 ma.c,得到ma.obj,如下图所示:

image-20240420161826241

使用这条命令:bcc -c -ml -Ic:\bc\include -Lc:\bc\lib mb.c 编译 mb.c,得到mb.obj,如下图所示:

image-20240420161908689

使用这条命令:bcc -c -ml -Ic:\bc\include -Lc:\bc\lib test.c 编译 test.c,得到test.obj,如下图所示:

image-20240420162103400

2.2 链接

使用这条命令:tlink c:\bc\lib\c0l.obj ma.obj mb.obj test.obj,test,test,c:\bc\lib\cl.lib 链接ma.obj、mb.obj、test.obj和生成可执行文件所需的其他库文件,得到test.exe,如下图所示:

image-20240420162235760

2.3 运行

test.exe运行结果如下图所示:

image-20240420162405217

链接多个文件时,tlink命令很长,为了方便我们进行程序设计,BC3.1可以将链接命令写入一个链接文件的文本文件中。如此一来,只需执行命令:tlink @链接文件的文件名称 通过引用链接文件就能够对目标文件进行链接。

其中,链接文件的文件名称可以由我们用户进行自定义,例如本次示例程序的链接文件我们命名为testlink。然后,进行链接工作时执行的命令的格式就是:tlink @testlink

链接文件的文件内容可以分行书写,以原命令中的逗号为界进行分隔或者还可以使用“+”符号做为续行符,例如testlink的文件内容可以是:

c:\bc\lib\c0l.obj ma.obj mb.obj test.obj
test
test
c:\bc\lib\cl.lib

还可以这样书写:

c:\bc\lib\c0l.obj +
ma.obj +
mb.obj +
test.obj
test
test
c:\bc\lib\cl.lib

参考资料:

《嵌入式实时操作系统μCOS-II原理及应用》

Borland C++3.1 神话般的经典开发工具 带有传奇色彩的BORLAND公司,见证了美国软件技术市场上波澜壮阔、激动人心的技术大战和产品大战,最为经典的成功范例就是Borland C++3.1! Borland是中国程序员最为景仰的公司之一,特别是对于资格老一点的程序员而言,他们学习编程的起步就是Borland. 以下是Borland c++入门指南中摘录的一些信息 Borlandc++适用于需要一个专业化、优化的编译器的C++和C程序员,它同时适用于A&T公司的C++2.1版和ANSIC的程序员。它快速而有效,据此用户可以创建包括Microsoft Windows应用程序在内的任何应用程序。 Borland C++3.0可以在DOS的环境下运行,更可以在Windows下运行,在Windows之下的Borland C工作环境更亲切,将使您开发程序更得心应手。 C++是一个面向对象(OOP)的程序设计语言.使用户能充分利用OOP的先进设计方法和省时效率高的特点,它是C语言的进一步发展,它是可移植的,所以用户可以很容易地将一个由C++编写的应用程序从—个系统移植到另一个系统。在任何地方,都可以用C++从事任何编程工作。 Borland C++特色 1. Borland C++3.0及3.1可供程序设计人员开发C++及c程序。其中的c++是依照AT&T2.1标准设计的,而C则是ANSI C。因此让您开发的程序兼容性高.移植性(Portable)也更强。 2.全局的优化(Global Optimization):为程序编译出最优的目的码,使执行时间减少,使目的码变小。 3.缩短编译时间:由于编译器及工具的使用,大大减少了编译时间。 4.集成开发可境:(即IDE,Integrated Development Environment),本产品提供一完整的工作平台(Platform),使程序的编写编译、调试、分析、运行相当完整且方便。 5.窗口程序开发:本产品可以开发出Microsoft Windows程序,还包括完整的工具程序:窗口资源编译器(Resource Compiler),在线帮助编译器(Help Compiler)及窗口资源工作程序(Resource Workshop)。 6. DPMI编译器:DPMI (DOS Protected Mode Interface)使编译器可以在DOS或Windows386的保护模式下运行,因此开发大型的程序不用担心内存不足。 7. Easywin:或将DOS程序直接转成Window。程序的功能,不需要改半行令。 8. WinSight:窗口信息跟踪程序,使我们看到程序与Windows之间的联系息。 9.在线帮助,在IDE环境下,任何错误都可由在线帮助得到说明或者想要任何时间查询函数或其他说明,都可使用此项功能。 10.虚拟Run - time面向对象存储管理功能(VROOMM,Virtual Run-time Object-Oriented Memory Manager)。当程序设计人员选定目的码的覆盖功能后,VRAOOMM会处理一切事情,即使程序超过640K。 11.丰富的类库,本产品提供常用的数据结构,例如List, Queue, Qegue, Stack, Array. . 等。 12.丰富的函数库:本产品提供4, 5百个函数,可以说无所不包了。 1.2.1. Borland C++3.1新功能 1. 3.1版将Turbo C++ for Window。改名为Borland C++for Windows, 2. 3.1版配合Windows 3.1版,增加多媒体(Multi-Media)、笔(Pen)和MCI (Media Control Interface)之控制接口。 3. 新增Win Spector I具程序,此工具程序是当Windows程序发生General Protection Faults时,提供发生此错误的地方,及当时机器的状态。 4. 在Borland C++ for Window,提供最优化的选项。 5. 彩色语法高亮显示(Color Syntax Highlighting),在源程序中设置不同的显示的颜 色。可在DOS IDE内的Options I Environment I Colors I Edit及Windows IDE内的Options Environment I Highlight内设置。 6. 可利用参数(-3)或IDC内的Options I Compiler I Advanced Coded Generation 80368设置产生386的目的码。 7. 可在程序内控制最大打开文件数,在_NFILE. H内#DEFINE_NFILE_n改变n的数值,要注意的是n必须小于等于Config.sys内的files数。
Borland C++3.1 神话般的经典开发工具 带有传奇色彩的BORLAND公司,见证了美国软件技术市场上波澜壮阔、激动人心的技术大战和产品大战,最为经典的成功范例就是Borland C++3.1! Borland是中国程序员最为景仰的公司之一,特别是对于资格老一点的程序员而言,他们学习编程的起步就是Borland. 以下是Borland c++入门指南中摘录的一些信息 Borlandc++适用于需要一个专业化、优化的编译器的C++和C程序员,它同时适用于A&T公司的C++2.1版和ANSIC的程序员。它快速而有效,据此用户可以创建包括Microsoft Windows应用程序在内的任何应用程序。 Borland C++3.0可以在DOS的环境下运行,更可以在Windows下运行,在Windows之下的Borland C工作环境更亲切,将使您开发程序更得心应手。 C++是一个面向对象(OOP)的程序设计语言.使用户能充分利用OOP的先进设计方法和省时效率高的特点,它是C语言的进一步发展,它是可移植的,所以用户可以很容易地将一个由C++编写的应用程序从—个系统移植到另一个系统。在任何地方,都可以用C++从事任何编程工作。 Borland C++特色 1. Borland C++3.0及3.1可供程序设计人员开发C++及c程序。其中的c++是依照AT&T2.1标准设计的,而C则是ANSI C。因此让您开发的程序兼容性高.移植性(Portable)也更强。 2.全局的优化(Global Optimization):为程序编译出最优的目的码,使执行时间减少,使目的码变小。 3.缩短编译时间:由于编译器及工具的使用,大大减少了编译时间。 4.集成开发可境:(即IDE,Integrated Development Environment),本产品提供一完整的工作平台(Platform),使程序的编写编译、调试、分析、运行相当完整且方便。 5.窗口程序开发:本产品可以开发出Microsoft Windows程序,还包括完整的工具程序:窗口资源编译器(Resource Compiler),在线帮助编译器(Help Compiler)及窗口资源工作程序(Resource Workshop)。 6. DPMI编译器:DPMI (DOS Protected Mode Interface)使编译器可以在DOS或Windows386的保护模式下运行,因此开发大型的程序不用担心内存不足。 7. Easywin:或将DOS程序直接转成Window。程序的功能,不需要改半行令。 8. WinSight:窗口信息跟踪程序,使我们看到程序与Windows之间的联系息。 9.在线帮助,在IDE环境下,任何错误都可由在线帮助得到说明或者想要任何时间查询函数或其他说明,都可使用此项功能。 10.虚拟Run - time面向对象存储管理功能(VROOMM,Virtual Run-time Object-Oriented Memory Manager)。当程序设计人员选定目的码的覆盖功能后,VRAOOMM会处理一切事情,即使程序超过640K。 11.丰富的类库,本产品提供常用的数据结构,例如List, Queue, Qegue, Stack, Array. . 等。 12.丰富的函数库:本产品提供4, 5百个函数,可以说无所不包了。 1.2.1. Borland C++3.1新功能 1. 3.1版将Turbo C++ for Window。改名为Borland C++for Windows, 2. 3.1版配合Windows 3.1版,增加多媒体(Multi-Media)、笔(Pen)和MCI (Media Control Interface)之控制接口。 3. 新增Win Spector I具程序,此工具程序是当Windows程序发生General Protection Faults时,提供发生此错误的地方,及当时机器的状态。 4. 在Borland C++ for Window,提供最优化的选项。 5. 彩色语法高亮显示(Color Syntax Highlighting),在源程序中设置不同的显示的颜 色。可在DOS IDE内的Options I Environment I Colors I Edit及Windows IDE内的Options Environment I Highlight内设置。 6. 可利用参数(-3)或IDC内的Options I Compiler I Advanced Coded Generation 80368设置产生386的目的码。 7. 可在程序内控制最大打开文件数,在_NFILE. H内#DEFINE_NFILE_n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值