实验(六)多文件工程管理

2023-04-02 22:22:58 浏览数 (1)

1. 创建工作目录

目录命名为班级加姓名的格式,如 1banz3

参考代码:

代码语言:shell复制
mkdir 1banz3
# 切到 1banz3 目录:
cd 1banz3

2. 新建 C 文件(一)

代码语言:shell复制
# 新建 string.c 文件
touch string.c
# 编辑 string.c 文件
vi string.c

输入以下代码

代码语言:c复制
#include<stdio.h>
int main()
{
    char c;
    char str[20];
    enter_string(str);
    printf("The delete string is: ");
    scanf("%c",&c);
    delete_string(str,c);
    print_string(str);
    return;
}

3. 新建 C 文件(二)

代码语言:shell复制
# 新建 EnterStr.c 文件
touch EnterStr.c
# 编辑 EnterStr.c 文件
vi EnterStr.c

输入以下代码

代码语言:c复制
#include<stdio.h>
int enter_string(char str[20])
{
    printf("Input the strings: ");
    fgets(str,20,stdin);
    return 0;
}

4. 新建 C 文件(三)

代码语言:shell复制
# 新建 DeleteStr.c 文件
touch DeleteStr.c
# 编辑 DeleteStr.c 文件
vi DeleteStr.c

输入以下代码

代码语言:c复制
#include<stdio.h>
int delete_string(char str[],char ch)
{
    int i,j;
    for(i=j=0;str[i]!='';i  )
        if(str[i]!=ch)
            str[j  ]=str[i];
    str[j]='';
    return 0;
}

5. 新建 C 文件(四)

代码语言:shell复制
# 新建 PrintStr.c 文件
touch PrintStr.c
# 编辑 PrintStr.c 文件
vi PrintStr.c

输入以下代码

代码语言:c复制
#include<stdio.h>
int print_string(char str[])
{
    printf("Result: %sn",str);
    return 0;
}

6. 新建 makefile 文件

代码语言:shell复制
# 新建 makefile 文件
touch makefile
# 编辑 makefile 文件
vi makefile

输入以下代码

代码语言:text复制
String:string.o EnterStr.o DeleteStr.o PrintStr.o
    gcc string.o EnterStr.o DeleteStr.o PrintStr.o -o String

程序中第一行注明依赖关系

程序中第二行注明即将执行的命令

其中第二行开头按TAB,表示往右缩进一段距离。

  • 如果代码粘到vi里面是四个空格,可以删掉这些空格然后按一次TAB键完成缩进。
  • 完成缩进后无需其它操作,保存退出即可。

7. 执行make命令

执行make命令前先用ll命令查看工作目录下的内容。

如果生成目标文件所依赖的源文件string.c、EnterStr.c、DeleteStr.c和PrintStr.c都在当前工作目录下,则可以运行make命令。

代码语言:shell复制
# 使用make命令编译链接生成可执行文件String
make

make操作后会出几行命令,其中cc是C编译器的默认名称。

使用ll命令查看当前工作目录,可以看到成功编译生成了可执行文件String,以及一些中间文件(如以.o结尾的目标文件)

8. 添加clean规则

如果不需要中间文件,可以在makefile中添加clean规则:

代码语言:shell复制
# 用vi编辑makefile文件
vi makefile

追加以下代码:(注意用TAB缩进而不是四个空格)

代码语言:text复制
clean:
    rm -rf string.o EnterStr.o DeleteStr.o PrintStr.o

执行make clean命令从而删除中间文件。

代码语言:shell复制
make clean

使用ll命令可以看到中间文件已经被清除。

9. 修改clean规则:不显示rm命令

如果想要执行命令时不显示某些命令,可以修改makefile文件,在这些命令的前面加上@符号。

例如修改clean规则,在rm命令前加入@符号:

代码语言:text复制
clean:
    @rm -rf string.o EnterStr.o DeleteStr.o PrintStr.o

10. 运行可执行文件

代码语言:shell复制
./String

参考运行结果:

代码语言:txt复制
Input the strings: xxyyzz
The delete string is: y
Result: xxzz

0 人点赞