Linux下的C语言学习之Makefile编写

时间:2022-06-02 15:26:23

这里我直接给大家展示一个我自己写的小工程实例,来帮助大家了解在linux下建立工程如何组织文件以及Makefile的编写。

我采用多文件的形式根据命令行的输入,求两个数的加,减,乘,除运算。下面我将分别列出各个文件的代码供大家参考。

add.h

#ifndef _ADD_H
#define _ADD_H
int add(int a, int b);
#endif
add.c

int add(int a, int b)
{
    return (a + b);
}
sub.h

#ifndef _SUB_H
#define _SUB_H
int sub(int a, int b);
#endif

sub.c

int sub(int a, int b)
{
    return (a - b);
}

mul.h

#ifndef __MUL_H
#define __NUL_H
int mul(int a, int b);
#endif

mul.c

int mul(int a, int b)
{
    return (a * b);
}

div.h

#ifndef __DIV_H
#define __DIV_H
double my_div(int a, int b);
#endif
div.c

double my_div(int a, int b)
{
    return ((double)a / (double)b);
}

main.c

#include <stdio.h>
#include <stdlib.h>
#include "add.h"
#include "sub.h"
#include "mul.h"
#include "div.h"

int main(int argc, char *argv[])
{
    int i1 = 0;
    int i2 = 0;

    if(argc < 3)
    {
        printf("请输入数字\n");
    }
    else
    {
        i1 = atoi(argv[1]);
        i2 = atoi(argv[2]);
        printf("%d plus %d is %d\n",i1,i2,add(i1,i2));
        printf("%d sub  %d is %d\n",i1,i2,sub(i1,i2));
        printf("%d mul  %d is %d\n",i1,i2,mul(i1,i2));
        printf("%d div  %d is %f\n",i1,i2,my_div(i1,i2));
    }

    return 0;
}

Makefile

.PHONY:clean
OBJECTS=main.o add.o sub.o mul.o div.o
main:$(OBJECTS)
    gcc -Wall -g $^ -o $@
main.o:main.c
    gcc -Wall -g -c $< -o $@
add.o:add.c add.h
    gcc -Wall -g -c $< -o $@
sub.o:sub.c sub.h
    gcc -Wall -g -c $< -o $@
mul.o:mul.c mul.h
    gcc -Wall -g -c $< -o $@
div.o:div.c div.h
    gcc -Wall -g -c $< -o $@
clean:
    rm -f main $(OBJECTS)

工程文件到此列举结束。

关于Makefile的编写,这里我们要注意几点事项。

1.Makefile的命令要以tab键开始,在linux中tab键要设置成4个空格的长度。(设置方法这里就不多说了)

2.在这里编写的Makefile文件只是最简单的Makefile文件,这是我们学习的第一步。


最后:本篇博文的所有版权归个人所有,如需转载请注明版权信息。