DOS版GNU GCC、Make等底层开发工具详解

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:底层开发涉及操作系统、驱动程序等低级别编程,需要使用特定工具。本文介绍了在DOS环境下使用的GNU GCC、Make等工具的DOS适配版本。GCC是一个开源编译器套件,支持多种语言;Make是一个自动化构建工具,用于管理编译依赖关系。Contrib文件夹包含额外工具,Manifest文件列出压缩包内容,Share文件夹存放共享资源。使用这些工具需要熟悉DOS命令行和底层系统结构,有助于理解计算机底层运作,在教学和研究中也广泛应用。 gnugccmake

1. 底层开发工具简介

底层开发工具是用于创建和操作计算机系统底层组件的软件工具。这些工具通常用于开发操作系统、驱动程序、嵌入式系统和高性能计算应用程序。底层开发工具包括编译器、汇编器、链接器、调试器和性能分析器等。

编译器将源代码转换为机器代码,机器代码是计算机可以理解和执行的指令。汇编器将汇编语言代码转换为机器代码。链接器将编译后的对象文件链接在一起,形成可执行程序。调试器用于查找和修复程序中的错误。性能分析器用于分析程序的性能并识别瓶颈。

2. GNU GCC DOS版介绍与实战

2.1 GNU GCC DOS版的安装和配置

安装步骤:

  1. 下载GNU GCC DOS版安装包。
  2. 解压安装包到指定目录,如 C:\MinGW
  3. 添加环境变量 PATH ,值为GCC安装目录的 bin 文件夹,如 C:\MinGW\bin

配置步骤:

  1. 创建一个新的文本文件,命名为 .gccinit
  2. .gccinit 文件中添加以下内容:
set PATH=%PATH%;C:\MinGW\bin
set INCLUDE=%INCLUDE%;C:\MinGW\include
set LIB=%LIB%;C:\MinGW\lib
  1. 保存 .gccinit 文件并将其放置在GCC安装目录的 etc 文件夹中。

2.2 GNU GCC DOS版的命令行使用

基本命令:

  • gcc :编译源代码文件。
  • ld :链接目标文件。
  • ar :创建和管理静态库。
  • strip :剥离目标文件中的符号信息。

常用参数:

  • -c :仅编译,不链接。
  • -o :指定输出文件。
  • -I :指定头文件搜索路径。
  • -L :指定库搜索路径。
  • -l :链接指定库。

示例:

编译源文件 main.c 并生成目标文件 main.o

gcc -c main.c

链接目标文件 main.o 并生成可执行文件 main.exe

ld -o main.exe main.o

2.3 GNU GCC DOS版的编译和链接

编译过程:

  1. 预处理:将源代码中的预处理指令(如 #include )展开。
  2. 编译:将预处理后的代码转换为汇编语言。
  3. 汇编:将汇编语言转换为机器码。

链接过程:

  1. 符号解析:查找和解析目标文件中的符号引用。
  2. 重定位:调整目标文件中的符号地址,使其在最终可执行文件中正确。
  3. 合并:将多个目标文件合并为一个可执行文件。

优化选项:

GNU GCC DOS版提供了多种优化选项,如:

  • -O0 :不优化。
  • -O1 :基本优化。
  • -O2 :中级优化。
  • -O3 :高级优化。

示例:

编译源文件 main.c 并生成优化后的可执行文件 main.exe

gcc -O2 -o main.exe main.c

3. Make DOS版介绍与实战

3.1 Make DOS版的安装和配置

Make DOS版是一个在DOS环境下使用的构建工具,它可以自动化编译和链接的过程。Make DOS版的安装非常简单,只需将下载的压缩包解压到指定目录即可。

解压后,在解压目录中找到名为 MAKE.EXE 的文件,将其复制到DOS的路径中。例如,如果DOS的路径为 C:\DOS ,则可以将 MAKE.EXE 复制到 C:\DOS 目录中。

复制完成后,就可以在DOS命令行中使用Make DOS版了。

3.2 Make DOS版的语法和规则

Make DOS版的语法和规则与Unix下的Make工具类似。一个Make文件由一系列规则组成,每个规则指定了一个目标文件及其依赖文件。目标文件是需要生成的,而依赖文件是生成目标文件所需的。

Make文件的语法如下:

target: dependency1 dependency2 ...
    command1
    command2
    ...

其中:

  • target 是目标文件。
  • dependency1 , dependency2 , ...是依赖文件。
  • command1 , command2 , ...是生成目标文件的命令。

例如,以下Make文件指定了如何生成 main.exe 文件:

main.exe: main.obj
    link main.obj

其中:

  • main.exe 是目标文件。
  • main.obj 是依赖文件。
  • link main.obj 是生成目标文件的命令。

3.3 Make DOS版的实战应用

Make DOS版可以用于自动化各种编译和链接任务。例如,可以创建一个Make文件来编译和链接一个C语言程序:

all: main.exe

main.exe: main.obj
    link main.obj

main.obj: main.c
    cl /c main.c

其中:

  • all 是默认的目标,它指定了要生成的最终文件。
  • main.exe 是可执行文件。
  • main.obj 是目标文件。
  • main.c 是源文件。
  • link main.obj 是链接命令。
  • cl /c main.c 是编译命令。

要使用这个Make文件,只需在DOS命令行中输入以下命令:

make

Make DOS版将自动编译和链接程序,并生成 main.exe 可执行文件。

除了编译和链接任务,Make DOS版还可以用于执行其他任务,例如:

  • 清除生成的文件
  • 运行测试
  • 生成文档

通过使用Make DOS版,可以大大提高开发效率和自动化程度。

4. Contrib文件夹介绍

4.1 Contrib文件夹的结构和内容

Contrib文件夹位于MinGW-w64安装目录的根目录下,它包含了各种实用的工具、库和头文件,这些资源可以极大地扩展MinGW-w64的功能。Contrib文件夹的结构如下:

├── bin
├── include
├── lib
├── share
├── tools
  • bin :包含各种可执行文件,例如:
  • make.exe :用于构建和管理项目。
  • mingw-get.exe :用于管理MinGW-w64包。
  • include :包含各种头文件,这些头文件定义了MinGW-w64支持的函数、数据类型和宏。
  • lib :包含各种库文件,这些库文件提供了预编译的代码,可以链接到程序中。
  • share :包含各种数据文件、文档和脚本。
  • tools :包含各种工具,例如:
  • dlltool.exe :用于创建和管理DLL。
  • windres.exe :用于编译资源文件。

4.2 Contrib文件夹中的实用工具

Contrib文件夹中包含了许多有用的工具,这些工具可以简化开发任务。以下是一些最常用的工具:

  • make.exe :一个强大的构建工具,用于自动化编译和链接过程。它可以根据Makefile中定义的规则来构建项目。
  • mingw-get.exe :一个包管理工具,用于安装和更新MinGW-w64包。它可以从MinGW-w64仓库中下载和安装包。
  • dlltool.exe :一个DLL工具,用于创建和管理DLL。它可以生成DLL的导出表和导入表。
  • windres.exe :一个资源编译器,用于编译资源文件。它可以将资源文件编译成二进制格式,以便链接到程序中。

5. Manifest文件介绍

5.1 Manifest文件的结构和语法

Manifest文件是MinGW-w64编译器中用于描述程序依赖关系和配置信息的文本文件。它通常位于程序的根目录中,文件名通常为"manifest.rc"。Manifest文件由一系列资源定义组成,每个资源定义描述了程序的一个特定方面,例如:

  • 程序的版本信息
  • 程序所需的DLL和库
  • 程序的窗口类和图标
  • 程序的语言和区域设置

Manifest文件遵循以下语法:

#include <winuser.h>

// 程序版本信息
RT_VERSION VERSIONINFO
{
    FILEVERSION 1.0.0.0
    PRODUCTVERSION 1.0.0.0
    FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
    FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE
    FILEOS VOS__WINDOWS32
    FILETYPE VFT_APP
    FILESUBTYPE VFT2_UNKNOWN
    PRODUCTNAME "My Application"
    PRODUCTVERSION "1.0.0.0"
}

// 程序所需的DLL和库
RT_MANIFEST_RESOURCE_ID 1
{
    MANIFEST
    {
        dependency
        {
            type "win32"
            name "kernel32.dll"
            version "6.1.7601.17514"
        }
        dependency
        {
            type "win32"
            name "user32.dll"
            version "6.1.7601.17514"
        }
    }
}

// 程序的窗口类和图标
RT_GROUP_ICON ICON "myicon.ico"
RT_GROUP_ICON ICON "myicon.ico"
RT_GROUP_ICON ICON "myicon.ico"
RT_GROUP_ICON ICON "myicon.ico"

// 程序的语言和区域设置
RT_STRING LANG "0409"
{
    "English (United States)"
}

5.2 Manifest文件的使用方法

要使用Manifest文件,需要在编译程序时将其传递给编译器。可以使用以下命令:

gcc -c -o myapp.o myapp.c
gcc -o myapp.exe myapp.o -Wl,--subsystem,windows -Wl,--manifest,manifest.rc

其中:

  • -Wl,--subsystem,windows 指定程序为Windows子系统编译
  • -Wl,--manifest,manifest.rc 指定Manifest文件

编译完成后,Manifest文件将被嵌入到可执行文件中。当程序运行时,Windows加载器将读取Manifest文件并根据其中定义的配置信息加载程序所需的DLL和库。

6. Share文件夹介绍

6.1 Share文件夹的结构和内容

Share文件夹是DJGPP中的一个重要组成部分,它包含了许多有用的工具和库文件。这些工具和库文件可以帮助开发人员在DOS环境中开发应用程序。

Share文件夹的结构如下:

share/
├── bin/
├── doc/
├── include/
├── lib/
├── man/
├── misc/
└── text/

其中,每个子文件夹包含以下内容:

  • bin/: 包含可执行文件,如ar、as、ld等。
  • doc/: 包含DJGPP文档和手册页。
  • include/: 包含C和C++头文件。
  • lib/: 包含静态和动态库文件。
  • man/: 包含手册页。
  • misc/: 包含各种杂项文件,如字体文件和键盘映射。
  • text/: 包含文本文件,如许可证和发行说明。

6.2 Share文件夹中的实用工具

Share文件夹中包含许多有用的工具,这些工具可以帮助开发人员在DOS环境中开发应用程序。其中一些工具包括:

  • ar: 用于创建和维护静态库文件。
  • as: 用于汇编汇编语言源文件。
  • ld: 用于链接目标文件和库文件以创建可执行文件。
  • make: 用于自动化编译和链接过程。
  • gdb: 用于调试程序。
  • djgpp: 用于编译和链接DJGPP程序。

这些工具在DOS环境中开发应用程序时非常有用。例如,ar工具可用于创建和维护静态库文件,而ld工具可用于链接目标文件和库文件以创建可执行文件。

7. DOS环境底层开发实战

7.1 DOS环境下编译和链接程序

在DOS环境下编译和链接程序需要使用GNU GCC DOS版和Make DOS版工具。编译是指将源代码翻译成机器指令的过程,而链接是指将编译后的目标文件和库文件组合成一个可执行文件。

编译步骤:

  1. 使用GCC编译器编译源代码文件,生成目标文件(.obj):
gcc -c source.c
  1. 使用Make工具链接目标文件和库文件,生成可执行文件(.exe):
make source.exe

链接步骤:

  1. 使用Make工具链接目标文件和库文件,生成可执行文件(.exe):
make source.exe
  1. 使用以下命令查看链接信息:
make -n source.exe

7.2 DOS环境下调试和优化程序

在DOS环境下调试和优化程序可以使用以下工具:

调试工具:

  • gdb: GNU调试器,用于调试程序。
  • debug: DOS内置调试器,用于调试程序。

优化工具:

  • gcc -O: 优化编译器选项,用于优化程序。
  • make -O: 优化Make工具选项,用于优化链接过程。

调试步骤:

  1. 使用gdb调试器调试程序:
gdb source.exe
  1. 使用debug调试器调试程序:
debug source.exe

优化步骤:

  1. 使用gcc -O选项优化编译器:
gcc -O source.c
  1. 使用make -O选项优化链接过程:
make -O source.exe

7.3 DOS环境下编写和使用库

在DOS环境下编写和使用库可以提高代码的可重用性。库是一种预编译的代码集合,可以被其他程序调用。

编写库步骤:

  1. 编写库的源代码文件,并编译成目标文件。
  2. 使用ar工具创建库文件:
ar -rc libname.a target1.obj target2.obj

使用库步骤:

  1. 在程序中包含库头文件,声明库函数。
  2. 使用gcc编译器链接程序和库:
gcc -Lpath/to/lib -lname source.c
  1. 使用Make工具链接程序和库:
make -Lpath/to/lib -lname source.exe

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:底层开发涉及操作系统、驱动程序等低级别编程,需要使用特定工具。本文介绍了在DOS环境下使用的GNU GCC、Make等工具的DOS适配版本。GCC是一个开源编译器套件,支持多种语言;Make是一个自动化构建工具,用于管理编译依赖关系。Contrib文件夹包含额外工具,Manifest文件列出压缩包内容,Share文件夹存放共享资源。使用这些工具需要熟悉DOS命令行和底层系统结构,有助于理解计算机底层运作,在教学和研究中也广泛应用。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值