以makefile的方式在linux上编译代码(小白级别)

作者:爱塔居

作者简介:大四学生,分享自己的学习片段~


目录

前言

一、创建主要文件

二、makefile


前言

多有不足,以供参考,欢迎大佬们指点。我是在虚拟机上执行的,应该都一样。我用的VirtualBox,然后找到terminal运行(不需要跟我一样)


最开始是这个界面:

首先了解一下基础linux命令:

vboxuser@Myvirtual:~$ vi hello.c

(第一个语句里面就可以编写代码了。点击esc,点击i,后开始写,写完esc,输入 ":wq",就能保存)

vboxuser@Myvirtual:~$ gcc hello.c -o hello -Wall

vboxuser@Myvirtual:~$ ./hello

ctrl+z 可以强制退出运行

修改文件还是一样用vi

然后删除文件用 rm

ls 是查看当前目录所有文件

cd + 文件夹名 是进入当前文件

简单了解一下,我们就可以学用makefile方式进行写代码了

一、创建主要文件

①首先

cs 复制代码
vi test1.c

进入test1.c文件

cs 复制代码
#include <stdio.h>
#include "test1.h"
int get_line(char s[], int lim)
{
    int c, i;
    int j;
    j = 0;
    for (i = 0;(c=getchar()) != EOF && c != '\n'; ++i)
    {
    if (i < lim - 2)
    {
    s[j++] = c;
    }
    }
    if (c == '\n')
    {
        s[j++] = c;
        ++i;
    }
    s[j] = '\0';
    return i;
}

如果只是复制,就不用点esc了,直接

cs 复制代码
:wq

②创建main_test1.c文件

cs 复制代码
vi main_test1.c
cs 复制代码
#include "test1.h"
#include <stdio.h>
#define MAXLINE 1000//宏定义的语句要放在头文件后面
int main()
{
    int len;    /*  当前行长度  */
    int max;    /*  目前为止发现的最长行的长度  */
    char line[MAXLINE];    /*  当前的输入行  */
    max = 80;
    while ((len = get_line(line, MAXLINE)) > 0)
    {
        if (len > max)
        {
        printf("%s", line);
        }
    }
    return 0;
}

一样操作保存退出。

③创建test1.h文件

cs 复制代码
#ifndef TEST1_H//有#的那三行是为了避免头文件重复引入和重复定义加的
#define TEST1_H
int get_line(char [], int);
#endif

二、makefile

创建一个makefile文件

cs 复制代码
test1:test1.c test1.h main_test1.c
        gcc -Wall test1.c main_test1.c -o test1

写完保存退出。

输入如下代码后回车:

cs 复制代码
make test1

如果没有报错,那就非常完美了!!!那就可以编译了。

cs 复制代码
 ./test1

然后就可以运行了。

相关推荐
Johny_Zhao8 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
淡海水8 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
落羽的落羽9 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生9 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹9 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker9 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦9 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
编程的一拳超人9 小时前
DeepSeek Harness Linux/macOS/Windows 本地下载、启动与模型配置指南
linux·windows·macos·deepseek
时凌云.9 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
不懂的浪漫10 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库